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

前端之家收集整理的这篇文章主要介绍了javax.crypto.Cipher为RSA使用了哪个填充前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要通过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");

猜你在找的Java相关文章