RSA非对称加密方案



一、秘钥池维护

每台应用服务器启动时生成一对秘钥对,并将秘钥对初始化到秘钥池,目前秘钥池里的秘钥数量等于应用服务器的台数,理论上秘钥对越多破解难度就越大。

当秘钥池不存在秘钥是重新生成秘钥对入池,防止意外清空秘钥池的情况

二、公钥复原

客户端在对数据进行加密前需要先对服务器端传递过来公钥串进行还原,基于以下两种方式可以在java、js、php等任何开发语言之间还原公钥:

A、根据公钥模数module和公钥指数exponent进行还原

B、将公钥字节转换成base64串,客户端解密这个base64串还原成公钥

这里采用B方案来还原公钥,好处在于只需要传递一个参数,客户端还原公钥也更简便

三、 RSA填充模式

RSA作为块加密算法,需要对块不足长的数据进行填充,填充算法主要有:

A、RSA_PKCS1_PADDING

最常用的模式

要求:
输入必须 比 RSA 钥模长(modulus) 短至少11个字节, 也就是RSA_size(rsa) – 11
如果输入的明文过长,必须切割,然后填充

输出和modulus一样长

根据这个要求,对于512bit的密钥, block length = 512/8 – 11 = 53 字节

B、RSA_PKCS1_OAEP_PADDING

RSA_size(rsa) – 41

C、RSA_NO_PADDING  

不填充

加密解密两端需要用相同的填充模式,不然加解密数据会不一致


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值