openssl编程_使用OpenSSL库中的流密码算法

27973a6f222c19a9bf9f1809e8ece115.png

    流密码是一种对称加密算法。与哈希函数一样,OpenSSL库中的流密码也具有一致的接口,使用起来也很简单。下面以RC4算法为例演示OpenSSL库中流密码的使用方法。

    温馨提示:由于本文包含程序代码,建议在PC端打开本文,获得更好阅读体验。

#include #include #include void print_hex(unsigned char *str, int len){  int i;  for(i = 0; i < len; ++i){    printf("%02X", str[i]);  }  printf("\n");}int main(){  //流密码RC4使用示例  unsigned char key[] = {    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,     0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F  };  unsigned char msg[] = "I like cryptography.";  unsigned char cipher[sizeof(msg)-1];  unsigned char recover[sizeof(msg)-1];    printf("msg:");  print_hex(msg, sizeof(msg)-1); //打印原消息    //加密  RC4_KEY ctx_enc;    RC4_set_key(&ctx_enc, sizeof(key), key); //设置密钥  RC4(&ctx_enc, sizeof(msg)-1, msg, cipher); //加密  printf("cipher:");  print_hex(cipher, sizeof(cipher)); //打印密文    //解密  RC4_KEY ctx_dec;    RC4_set_key(&ctx_dec, sizeof(key), key); //设置密钥  RC4(&ctx_dec, sizeof(cipher), cipher, recover); //解密    printf("recover:");  print_hex(recover, sizeof(recover)); //打印解密结果  return 0;}

    执行程序,输出结果如下:

msg:49206C696B652063727970746F6772617068792Ecipher:A0BC2C902C8739AF74A2E7B261BA582EA319F871recover:49206C696B652063727970746F6772617068792E

    其中,msg为原始消息,cipher为msg加密后的密文,recover为cipher解密后的明文。

    程序说明:

(1)RC4_KEY ctx_enc;

定义一个与RC4算法状态相关的变量。

(2)RC4_set_key(&ctx_enc, sizeof(key), key);

初始化已定义的ctx_enc变量。

(3)RC4(&ctx_enc, sizeof(msg)-1, msg, cipher);

执行加密。

与OpenSSL库相关的文章链接:

(1)OpenSSL库在Linux系统下的安装和测试

(2)使用OpenSSL库中的哈希函数

如果对密码编程感兴趣,可扫码加入下面的微信群:

6a888b6d1e9fce062c4bb206ded4bfa7.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值