RC5是对称加密算法,由Ronald Rivest在1994年设计的分组加密算法,计算速度快,算法简单,AES作为RC6算法,就是基于RC5而来。
RC5分组是可变的,可以是32,64,128位,密钥长度0到2040位。计算0-255轮,推荐使用的参数为,数据分组64位,密钥长度128位,计算12轮。
void RC5_32_set_key(RC5_32_KEY *key, int len, const unsigned char *data,
int rounds);
设定RC5 的Key对象。
key: 密钥对象;
len: 长度,密钥长度为128位,所以为16;
data: 密钥数据;
void RC5_32_ecb_encrypt(const unsigned char *in,unsigned char *out,RC5_32_KEY *key,
int enc);
RC5 ECB加密/解密;
in: 源数据;
out:输出数据;
key: 密钥对象;
enc: 加密/解密模式,RC5_ENCRYPT,加密;RC5_DECRYPT,解密;
void RC5_32_encrypt(unsigned long *data,RC5_32_KEY *key);
RC5加密计算,是被其他函数调用的内部函数;
void RC5_32_decrypt(unsigned long *data,RC5_32_KEY *key);
RC5解密函数,是被其他函数调用的内部函数;
void RC5_32_cbc_encrypt(const unsigned char *in, unsigned char *out,
long length, RC5_32_KEY *ks, unsigned char *iv,
int enc);
RC5 cbc模式加密/解密;
in: 源数据;
out:输出数据;
length:数据长度;
ks: 密钥对象;
iv: 初始化向量;
enc: 加密/解密模式,RC5_ENCRYPT,加密;RC5_DECRYPT,解密;
void RC5_32_cfb64_encrypt(const unsigned char *in, unsigned char *out,
long length, RC5_32_KEY *schedule,
unsigned char *ivec, int *num, int enc);
RC5的cfb64模式加密解密;
in: 源数据;
out:输出数据;
length:数据长度;
schedule: 密钥对象;
ivec: 初始化向量;
num:初始化向量中多少个字节参与计算;
enc: 加密/解密模式,RC5_ENCRYPT,加密;RC5_DECRYPT,解密;
void RC5_32_ofb64_encrypt(const unsigned char *in, unsigned char *out,
long length, RC5_32_KEY *schedule,
unsigned char *ivec, int *num);
RC5的ofb64位模式;
in:源数据;
out: 输出数据;
length: 数据长度;
schedule: 密钥对象;
ivec:初始化向量;
num: 初始化向量中多少个字节参与计算;