openssl RSA加密方法初识


作为非对称加密算法,有两对密钥
一般用法

加密结果=RSA_EN(数据,公钥);

解密结果=RSA_DE(数据,私钥);


RSA填充 (RSA_public_encrypt和RSA_private_decrypt自动完成,不用操心,这里只做些说明)

RSA也是对数据分块处理,一般有两种填充方法,当然也可以不填充。

RSA_PKCS1_PADDING:数据块长度(字节)至少比RSA_size(rsa)小11字节。

这里的RSA_size(rsa) = 密钥长度(字节)

例如128Byte(1024bit)的密钥,每个数据块的最大长度就是128-11=117,
然后,加密出来的数据也是128Byte

如果要加密的数据块小于117Byte,比如说64Byte,就要对明文进行填充方式:
[0x02(表示采用公钥加密)][51个伪随机字节][0x00][数据块(64Byte)] 得到总长度117的数据块
如果采用私钥加密
[0x01(表示采用私钥加密)][51个0xff][0x00][数据块(64Byte)] 得到总长度117的数据块
接着填充分组(分组长度128Byte)
[0x00][0x01][8个0xff][0x00][数据块(117Byte)]


RSA_PKCS1_OAEP_PADDING:数据块长度(字节)至少比RSA_size(rsa)小41字节。
解释类似。

-_-!实在瞎编不下去了

int RSA_public_encrypt(int flen, unsigned char *from,
           unsigned char *to, RSA *rsa, int padding);
int RSA_private_decrypt(int flen, unsigned char *from,
            unsigned char *to, RSA *rsa, int padding);


           flen:被加密的数据长度
           from:被加密的数据
           to  :结果
           rsa :密钥
           padding :填充方式



转载于:https://www.cnblogs.com/ruanjianxian/p/6126844.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值