gpt4 book ai didi

java - SUN JCE/Oracle JCE 中的默认 RSA 填充

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

你能帮我指出默认的 RSA 填充是什么吗?

准确地说,如果我如下创建密码实例,确保 java 使用某种填充作为加密文本字节长度始终显示 256 字节的 2048 RSA key ,无论纯文本是一个字符还是 10 个字符。

Cipher.getInstance("RSA")  

如果在 Cipher.getInstance("RSA") 中未指定填充,我想知道 java 在内部使用的默认填充是什么。是 PKCS#1 v 1.5 吗?

谢谢,山姆

最佳答案

它与 "RSA/ECB/PKCS1Padding" 相同,其中 ECB 有点用词不当,因为它没有实现分组密码操作模式(它不处理大于“ block 大小”)。 "RSA/None/PKCS1Padding""RSA/None/RSASSA-PKCS1-v1_5" 会是更好的名称,因为您对填充机制的猜测是正确的。

这意味着它使用了旧的加密模式; OAEP 更能抵抗攻击并包含安全证明。不幸的是,OAEP 当然不能成为新的默认值,因为所有现有的密文都不会再解密了。这就是为什么使用默认值首先是愚蠢的原因之一。

PKCS#1 v1.5 填充还意味着输入被限制为最大 key 大小减去 11 个字节。请注意,生成的密文的大小始终与 PKCS#1 中的 key 大小相同;即使生成的整数更小,它也会被填充为零字节。我在这里假设 key 大小是 8 的倍数。

您不应依赖算法规范的默认值。它使代码更难理解,并且每个提供商的默认值可能确实不同(尽管大多数人会尝试遵循 Oracle 的领导,以避免不兼容)。因此,仅使用它来了解现有代码中配置了哪种算法。在我看来,平台默认值唯一有意义的地方是 SecureRandom

关于java - SUN JCE/Oracle JCE 中的默认 RSA 填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21066902/

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