1

如果我MD5WithRSAEncryption用作签名算法,那么对应的随机算法是什么?
我试过MD5PRNG了,但我得到了:

java.security.NoSuchAlgorithmException:找不到 SecureRandom MD5PRNG 实现

此处用于初始化 a 的正确随机算法是 KeyPairGenerator什么?
就像SHA1PRNG我们使用SHA256WithRSAEncryption

我的意思是:SHA256WithRSAEncryptionis a key pair algorithm,而SHA1PRNGis arandom generator由密钥对算法使用。例如keyPairGenerator.initialize(keySize, secureRandom);
keyPairGenerator类在哪里KeyPairGenerator
它们是否以某种方式依赖于正确的配对?即我可以将 MD5WithRSAEncryption 与 SHA1PRNG 一起使用吗?

4

2 回答 2

3

确定性随机位生成器 (DRBG) 基础的哈希算法(如果有)无关紧要。

DRBG 的输出在统计上是随机的;如果您能够通过检查输出来确定有关位来源的任何信息,则它不适合加密使用。

顺便说一句,RSA签名算法在使用RSA-PSS方案时使用了RNG。旧的 RSA 签名是确定性的(这是一个弱点)。

重要的算法的有效强度。例如,您不想将 SHA-1 与 3072 位 RSA 签名密钥一起使用;散列不如使用该密钥的加密算法强。DRBG 也可以按其强度进行分类。DRBG 的安全强度表明需要多少计算来预测其输出,而无需给出其内部状态。

良好的基于​​散列的 DRBG 的安全强度与底层散列函数的安全强度相同。要找出这一点,请查看NIST SP 800-57 第 1 部分表 3。为了增强安全性,112 位是最低要求,鼓励使用 128 位或更多。这意味着使用基于 SHA-224 或 SHA-256 的 DRBG,分别具有 2048 位或 3072 位 RSA 密钥。

于 2012-06-29T07:16:41.027 回答
2

SHA1PRNG 的唯一问题是密钥空间由于某种原因限制为 20 个字节。这是完全没有必要的,因为可以对几乎无限量的文本执行散列。我不清楚为什么这个生成器的密钥大小有限制。好消息很容易复制源代码并消除该限制。坏消息是它与标准实现不兼容。

于 2013-09-23T16:06:19.923 回答