- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 1024 位的私钥,并用它来生成公钥。这是否自动意味着我的公钥也具有 1024 加密?或者它的加密大小可以更小吗? (512、256...)
PS:我最感兴趣并谈论的是 RSA key 中模数(“n”)的大小。大小通常为 1024 或 2048 位。但我很高兴看到这引发了讨论,所有这些都激发了我对密码学的兴趣。
最佳答案
这取决于加密算法以及您所说的公钥/私钥。有时,与磁盘或网络上的序列化相比,可以使用不同大小的 RAM。
RSA 公钥由模数 n
和公共(public)指数 e
组成。我们通常为 e
选择一个较小的值(3 或 65537 很常见)。 e
的大小对安全性影响不大。由于e
通常小于四个字节,而n
超过一百个字节,因此总大小由模数决定。如果您确实愿意,可以将 e
修复为协议(protocol)规范的一部分,这样就只需要存储 n
。
RSA 私钥可以用不同的形式表示,但通常我们存储值 p
、q
、dp
、 dq
、e
、d
、n
、InvQ
。它们的总大小大于公钥。其中大多数并不是严格必需的,但使用它们而不是重新生成它们会很方便。给定 e
、p
和 q
重新生成所有这些都非常简单。
当我们在 RSA 上下文中谈论 key 大小时,我们总是指模数的大小,忽略所有其他元素。这是一个有用的约定,因为这是影响安全性的唯一值。 n
的典型大小是 2048 位。
私钥是安全级别大小两倍的标量。典型值为 256 位。
公钥是一个群元素,它比私钥大得多。典型值为 2048 位。
因此,对于有限域加密,公钥比私钥大得多。
私钥是安全级别大小两倍的标量。典型值为 256 位。这部分与有限域加密相同。
公钥是一个组元素。序列化此类元素有两种形式。压缩形式比私钥稍大(最多几个位)。未压缩的形式大约是私钥大小的两倍。压缩形式的典型值为 256 位,未压缩形式的典型值为 512 位。
当您自己生成公钥/私钥对时,您始终可以将它们存储为 PRNG 的种子。这样,无论您使用哪种方案,它们都非常小,只有 160 位左右。这样做的缺点是重新生成私钥的自然形式可能会很昂贵。要求 key 对的创建方法保持不变。
您通常可以只存储指纹(大小约为 160 位),而不是存储完整的公钥。这样做的缺点是它增加了消息/签名的大小。
对于某些算法,公钥和私钥的大小相同,对于某些算法,它们不同,并且通常可以以一定的成本(解压时间或消息大小)来压缩其中一个或两个。
关于encryption - 公钥的长度(加密)可以与私钥不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19343022/
我是一名优秀的程序员,十分优秀!