gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:03:03 26 4
gpt4 key购买 nike

我需要通过 RSA 解密消息以便通过不安全的 channel 发送消息,但我担心 Padding Oracle Attack .因此我已经提出了以下问题:

  1. How to verify the integrity of RSA encrypted messages?
  2. 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 Oracle Attack 的攻击 OAEP不是(假设它已正确实现)

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

最佳答案

这取决于选择的或默认的提供程序,当您实例化密码而不完全限定它时实际使用哪个填充,例如:

Cipher.getInstance("RSA")

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

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

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

关于java - javax.crypto.Cipher 为 RSA 使用了哪个填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32033804/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com