加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

javax.crypto.Cipher为RSA使用了哪个填充

发布时间:2020-12-15 00:48:19 所属栏目:Java 来源:网络整理
导读:我需要通过RSA解密消息,以便通过不安全的通道发送消息,但我害怕 Padding Oracle Attack.因此我已经问过以下问题: How to verify the integrity of RSA encrypted messages? How to ensure message integrity for RSA ciphers by using javax.crypto.Cipher
我需要通过RSA解密消息,以便通过不安全的通道发送消息,但我害怕 Padding Oracle Attack.因此我已经问过以下问题:

> How to verify the integrity of RSA encrypted messages?
> How to ensure message integrity for RSA ciphers by using javax.crypto.Cipher

像第一个问题中建议的那样,

However,since you are using a high level cryptographic library,this is something you shouldn’t have to worry about. The writers of that library should have taken care of it.

我不应该考虑.据我所知,PKCS#1 v1.5的RSA实现容易受到Padding Oracale攻击,因此OAEP不是(假设它已正确实现)

因此,我想知道Java 7的javax.crypt.Cipher使用了哪个填充实现

解决方法

它取决于所选择的或默认的提供程序,当您实例化一个密码而没有完全限定它时,实际使用哪个填充:
Cipher.getInstance("RSA")

这样做是一种不好的做法,因为如果你切换Java实现,可能会有不同的默认值,突然间,你将不再与旧的密文兼容.始终完全符合密码.

正如我之前所说,默认可能(有许多提供商,一个不能确定)是PKCS#1 v1.5填充.如果您需要另一个,则必须指定它.如果您想使用OAEP,这里是一个来自here的完全限定的密码字符串:

Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding");

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读