通过加载包含RSA私钥的预先创建的.key文件,我注意到它包含以下数字:
Modulus (private modulus)
Exponent (private exponent)
P (prime exponent)
Q (prime exponent)
DP
DQ
InverseQ
我正在将密钥文件保存在某处,存储空间非常小(可移植).我虽然只保存模数和指数.我知道P,Q和E是创建模数和指数所必需的,但是:
题:
当PrivateModulus和PrivateExponent需要签名和解密消息时,将所有这些数据保存到.key文件的目的是什么?
最佳答案 那么,您需要加密的公钥Modulus和Exponent以及用于解密和签名的私钥Modulus和D.
P和Q可能只是为了安全而添加,因为没有有效的方法从其他给定的值重建它们.因此,如果您的D被破坏,您可以重建它,或者如果可能需要特殊实现来进行某些数学技巧来优化计算.
一些实现使用DP,DQ和InverseQ的值来使用中国剩余定理来计算RSA以加速整个过程.
DP = D mod (P - 1)
DQ = D mod (Q - 1)
InverseQ = Q^-1 mod (P - 1)
有关其工作原理的更多信息,请查看此 crpypto.stackexchange-question或Wikipedia-article.