crypt , encrypt 或 setkey 子例程
用途
对数据进行加密或解密。
库
标准 C 库 (libc.a)
语法
void setkey (Key)
const char * Key;
const char * Key;
描述
crypt 和 encrypt 子例程对数据进行加密或解密。 crypt 子例程使用提供的 PW 参数对固定数据数组执行单向加密。 子例程使用 Salt 参数来改变加密算法。
encrypt 子例程使用先前对 setkey 子例程的调用提供的密钥对 Block 参数中提供的数据进行加密或解密。 输入的 Block 参数中的数据必须是由 64 个字符组成的数组。 每个字符必须是 char 0 或 char 1。
如果需要从 libc.a for crypt 静态绑定函数,请执行以下操作:
- 创建文件并添加以下内容:
#! ___setkey ___encrypt ___crypt - 执行链接。
- 将以下内容添加到 make 文件:
其中YourFileName是您在步骤 1 中创建的文件名。 它应该类似于以下内容:-bI:YourFileNameLDFLAGS=bnoautoimp -bI:/lib/syscalls.exp -bI:YourFileName -lc
提供这些子程序是为了与UNIX系统实现兼容。
参数
| 项 | 描述 |
|---|---|
| BLOCK | 标识包含值 (char) 0 和 (char) 1 的 64 字符数组。 返回时,此缓冲区包含已加密或已解密的数据。 |
| EdFlag | 确定子例程是对数据进行加密还是解密。 如果此参数为 0 ,那么将对数据进行加密。 如果此参数是非零值,那么将解密数据。 如果 /usr/lib/libdes 或 /usr/lib/libdes_64 文件不存在,并且如果 EdFlag 参数设置为非零值,那么 encrypt 子例程将返回 ENOSYS 错误代码。 /usr/lib/libdes 和 /usr/lib/libdes_64 文件是位于 AIX® 扩展包中的 des 文件集的一部分。 |
| key | 指定 0 和 1 的强制类型转换为 const char 数据类型的 64 元素数组。 Key 参数用于加密或解密数据。 |
| PW | 指定要加密的字符串。 |
| 盐值 | 确定 PW 参数应用于生成返回的输出字符串的算法。 如果左花括号 ({) 不是 Salt 参数指定的值的第一个字符,那么子例程使用数据加密标准 (DES) 算法。 对于 DES 算法,请使用 Salt 参数以 4096 方法之一来改变散列算法。 Salt 参数必须是来自以下字符类型的 2 字符串:
如果左花括号 ({) 是 Salt 参数指定的值的第一个字符,然后可装入密码算法 (LPA) 使用花括号 ({}) 中指定的名称。 一组 Salt 字符跟在 LPA 名称后面,以美元符号 ($) 结尾。 盐字符的长度取决于指定的 LPA。 以下示例显示了 Salt 参数指定的
SMD5 LPA 的可能值: |
返回值
crypt 子例程返回指向加密密码的指针。 此指针指示的静态区域可能被后续调用覆盖。
如果 crypt 子例程不成功,那么将返回空指针并设置 errno 全局变量以指示错误。
错误代码
encrypt 子例程返回以下错误代码:
| 项 | 描述 |
|---|---|
| ENOSYS | 使用设置为非零值的 EdFlag 参数调用了 encrypt 子例程。 另外, /usr/lib/libdes 或 /usr/lib/libdes_64 文件不存在。 /usr/lib/libdes 和 /usr/lib/libdes_64 文件是位于 AIX 扩展包中的 des 文件集的一部分。 |