des_crypt函数用法详解
des_crypt函数简介
- 头文件包含
#include <rpc/des_crypt.h>
- 函数定义
int ecb_crypt(char * key , char * data , unsigned datalen ,
unsigned mode );
int cbc_crypt(char * key , char * data , unsigned datalen ,
unsigned mode , char * ivec );
void des_setparity(char * key );
int DES_FAILED(int status );
des_crypt函数常见使用错误
- 编译错误
warning: implicit declaration of function ‘des_crypt’ [-Wimplicit-function-declaration]
解决办法:包含头文件
#include <rpc/des_crypt.h>
des_crypt函数详细描述
ecb_crypt ()和cbc_crypt ()实现了NBS DES(数据加密标准)。这些例程比crypt (3)更快,更通用,如果有的话,它们也能够利用DES硬件。ecb_crypt ()以ECB(电子码本)模式加密,该模式独立加密数据块。cbc_crypt ()以CBC(密码块链接)模式加密,该模式将连续的块链接在一起。CBC模式防止块的插入、删除和替换。此外,明文中的规则不会出现在密码文本中。
以下是如何使用这些例程。第一个参数key 是带有奇偶校验的8字节加密密钥。要设置密钥的奇偶校验(对于DES来说,奇偶校验位于每个字节的低位),请使用第二个参数des_setparity (),data 包含要加密或解密的数据。第三个参数datalen 是data 的长度(以字节为单位),它必须是8的倍数。第四个论点,mode 是由一些东西组合在一起形成的。对于加密方向,或者在DES_ENCRYPT或DES_DECRYPT 中进行软件加密与硬件加密,或者在DES_HW或DES_SW 中进行,如果指定了des_setparity ()0,并且没有硬件,则在软件中执行加密,例程返回DESERR_NOHWDEVICE ,对于cbc_crypt (),参数ivec是链接的8字节初始化向量。它在返回时更新到下一个初始化向量。
des_crypt函数返回值
- DESERR_NONE没有错误。
- DESERR_NOHWDEVICE加密成功,但是在软件中完成的,而不是在请求的硬件中完成的。
- DESERR_HWERROR硬件或驱动程序中发生错误。
- DESERR_BADPARAM例程参数错误。
给定结果状态stat ,宏DES_FAILED(stat)仅对前两个状态为false。
评论区