函数原型
void DES_ecb_encrypt(const_DES_cblock *input,const_DES_cblock *output,DES_key_schedule *ks,
int enc)
//ECB操作模式,该函数把8字节明文分组input加密成一个8 字节密文分组output,参数中的密钥结构ks由下面
的DES_set_key()产生,
参数enc指示加密还是解密(1表示加密,0表示解密),对称加密算法的加解密函数相同.
int DES_set_key(const_DES_cblock *key,DES_key_schedule *schedule)
参数分析
从openssl的include/openssl目录下的des.h头文件中得知:
typedef unsigned char DES_cblock[8];
typedef /* const */ unsigned char const_DES_cblock[8];
typedef /* const */ unsigned char const_DES_cblock[8];
typedef struct DES_ks
{
union
{
DES_cblock cblock;
/* make sure things are correct size on machines with
* 8 byte longs */
DES_LONG deslong[2];
} ks[16];
} DES_key_schedule;
{
union
{
DES_cblock cblock;
/* make sure things are correct size on machines with
* 8 byte longs */
DES_LONG deslong[2];
} ks[16];
} DES_key_schedule;
解释
DES_cblock为8个无符号字符类型(char与unsigned char在内存中都占一个字节,但char最高位为符号位,
因此char能表示-128~127;
unsigned char没有符号位,因此能表示0~255),所以sizeof(DES_cblock)=8字节.
const_DES_cblock与上相同。
DES_key_schedule为DES_ks结构体,里面是一个union共用体,所以DES_key_schedule的size
为16x8=128字节。
本文详细介绍了对称加密算法DES中的DES_ecb_encrypt()函数,包括其函数原型、参数分析。该函数用于在ECB模式下将8字节明文加密为8字节密文,通过DES_set_key()设置密钥,enc参数决定是加密还是解密。
5425

被折叠的 条评论
为什么被折叠?



