你能帮我指出什么是默认的RSA填充吗。
准确地说,如果我按照下面的方式创建密码实例,那么肯定java使用了某种填充,因为加密文本字节长度对于2048个RSA密钥总是显示为256字节,而不管纯文本是1个字符还是10个字符。
Cipher.getInstance("RSA")
它与“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
。
问题内容: 如果我们;默认执行此操作,则会添加空格字符以填充10,对吗?有办法改变吗? 我知道,您可以0通过0在之前指定来添加s,但是还printf支持其他功能吗? 问题答案: 不。空间是硬编码的。这甚至是java.util.Formatter源的代码段: 如果您希望获得不同的填充,可以执行后格式替换或类似的操作:
有人能解释一下为什么这段代码在解密密钥时会在最后一行抛出吗? 以下是来自https://stackoverflow.com/a/27886397/66722对于使用OAEP的RSA也是如此? “RSA/ECB/PKCS1Padding”实际上没有实现ECB模式加密。它应该被称为“RSA/None/PKCS1Padding”,因为它只能用于加密单个明文块(或者实际上是一个密钥)。这只是Sun/Ora
问题内容: 有人可以向我解释为什么解密密钥时此代码会出现在最后一行吗? 来自OAEP的RSA的http://codingdict.com/questions/131368中的以下声明也适用吗? 实际上,“ RSA / ECB / PKCS1Padding”未实现ECB模式加密。它应该被称为“ RSA / None / PKCS1Padding”,因为它只能用于加密单个明文块(或者实际上是一个秘密密
问题内容: 这似乎是一个愚蠢的问题,但是我在基本页面上添加了UL,并且列表似乎偏离了中心。列表没有什么特别的。没有添加特定的CSS:只是一个列表。当我加载直播时,它稍微偏离中心。 左侧是否有默认边距或填充? 主体具有用于居中,对齐,浮动等的所有css代码。“标题标题”完美对齐。只是列表有点小。 谢谢。 哦,不知道这是否重要,但是我添加了“ id”原因…想要使用“ first-of-type”来赋予
问题内容: 这似乎是一个愚蠢的问题,但是我在基本页面上添加了UL,列表似乎偏离了中心。列表没有什么特别的。没有添加特定的CSS:只是一个列表。当我加载直播时,它稍微偏离中心。 左侧是否有默认边距或填充? 主体具有用于居中,对齐,浮动等的所有css代码。“标题标题”完美对齐。只是列表有点小。 谢谢。 哦,不知道这是否重要,但是我添加了“ id”原因…想要使用“ first-of-type”来赋予第一
问题内容: 我的应用程序正在访问e-Token来解密来自服务器的响应 来自服务器的会话密钥使用以下方法加密: RSA / ECB / OAEPWITHSHA-256ANDMGF1PADDING 我正在使用SunPKCS11 Provider来实现对加密令牌的访问。每当我尝试使用上述机制解密此文件时,即使用 RSA / ECB / OAEPWITHSHA-256ANDMGF1PADDING, 我都会