Openssl入门第四课--RSA加密算法之数据不固定性解密

上次博主发现使用上一版本代码,加密数据不确定性,这个问题博主找到了,可以看到博主待加密值是一串Hash值,这个hash值是从SHA256运算得到的结果,所以Hash值的长度是32字节。

因此使用加密函数的API,一定会需要输入待加密的数据长度,该长度为32字节。按照rsa算法的特性,明文长度有以下几种分类。

明文长度 = 实际明文长度+填充值

只要用到填充就会产生以下几种方式:NoPPadding、OAEPPadding、PKCS1Padding

只要用到padding,那么就要占用实际的明文长度,于是才有117字节的说法。我们一般使用的padding标准有NoPPadding、OAEPPadding、PKCS1Padding等,其中PKCS#1建议的padding就占用了11个字节。

RSA加密常用的填充方式有下面3种:

  • 1.RSA_PKCS1_PADDING 填充模式,最常用的模式
  • 输入:必须 比 RSA 钥模长(modulus) 短至少11个字节, 也就是 RSA_size(rsa) – 11
  • 2.RSA_PKCS1_OAEP_PADDING,新应用推荐使用,最安全
  • 输入:RSA_size(rsa) – 41
  • 3.RSA_NO_PADDING  不填充,不安全。
  • 输入:可以和RSA钥模长一样长,如果输入的明文过长,必须切割, 然后填充

因此实际可加密的明文长度为0<实际明文长度<秘钥长度。

博主上一个代码中,使用填充RSA_PKCS1_PADDING,将原本32字节长度的明文扩充到秘钥长度256字节,所以每次得到的加密值不同,针对这个博主将待加密明文扩成256字节,这次加密的密文就固定了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值