我正在使用openssl模块处理rsa私钥和公钥/加密/解密/等。但是一个问题仍然没有答案:为什么私钥通常(总是,我不知道)比公钥更长?
这有几个答案吗?
这是我生成的公钥和私钥。
答案 0 :(得分:4)
为什么私钥经常(总是,我不知道)比公钥更长?
公钥是{e, n}
对,其中e
是公共指数,n
是模数。
其中一个私钥表示是三元组{e, d, n}
,其中e
是公共指数,d
是私有指数,n
是模数。
n-tuple {e, d, n, p, q, dp, dq, qi}
的其他私钥表示,其中e
是公共指数; d
是私人指数; n
是模数; p
和q
是n
的因素。
其余的是中国剩余定理,它允许加速签名(我相信)。 dp
是p的指数,是一个正整数,e(dP) ≅ 1 (mod(p-1))
; dq
是q的指数,是一个正整数,e(dq) ≅ 1 (mod(q-1))
; qi
是CRT系数,小于p
的正整数,q(qInv) ≅ 1 (mod p)
。
答案 1 :(得分:3)
RSA 私钥包含 RSA 公钥中的值,以及一些私有的值。此外,价值本身也更大。
公钥包含模数和公共指数 e ,它很短(大多数为3或65537)。另一方面,私钥包含私有指数 d ≡ e -1 (modφ( n ) )。根据φ( n ), d 可能比 e 大得多。
还有其他公钥算法,这是不同的。一些基于椭圆曲线的算法有一个大整数作为私钥(和组描述),公钥有一个大于整数的曲线点(和组描述)。