首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SUN JCE/Oracle JCE中的默认RSA填充

SUN JCE/Oracle JCE中的默认RSA填充
EN

Stack Overflow用户
提问于 2014-01-12 03:35:32
回答 1查看 5.6K关注 0票数 10

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

准确地说,如果我像下面这样创建cipher实例,就可以确定java正在使用某种类型的填充作为加密文本字节长度始终显示256字节的2048 RSA密钥,而不管纯文本是1个字符还是10个字符。

代码语言:javascript
复制
Cipher.getInstance("RSA")  

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

谢谢,山姆

EN

回答 1

Stack Overflow用户

发布于 2014-01-12 09:46:47

这与"RSA/ECB/PKCS1Padding"相同,ECB有点用词不当,因为它不实现块密码操作模式(它不处理大于“块大小”的明文)。"RSA/None/PKCS1Padding"可能是一个更好的名称或"RSA/None/RSASSA-PKCS1-v1_5",因为您对填充机制的猜测是正确的。

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

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

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

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21066902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档