Ido*_*ing 2 cryptography rsa x509 windows-server-2016 windows-server-2019
这是我的问题:
\n在 C#/.NET-4.8 中,我在两台服务器上使用带有 RSA 私钥的 P12 证书。\n一台服务器运行 Windows Server 2016,另一台服务器运行 Windows Server 2019。\n当我比较两台服务器上同一证书的 RSA 私钥时,输出不一样。\n\n\xe2\x80\x9cprivate exponent\xe2\x80\x9d(在 \xe2\x80\x9cD\xe2\x80\x9d 属性中找到)不一样。
\n有谁知道为什么会发生这种情况?
\n额外信息:\n每次运行时,代码都会(每个系统)输出相同的密钥(这当然很好)。\n代码在 Windows 10、Windows 11 和 Windows Server 2019 上输出相同的私钥,但在 Windows 上服务器2016就不一样了。
\n读取证书密钥的代码是:
\nusing (var rsaPrivateKey = _certificate.GetRSAPrivateKey())\n{\n var parameters = rsaPrivateKey.ExportParameters(true);\n privateExponent = BitConverter.ToString(parameters.D); // privateExponent (parameters.D) is the components which is not the same on each system.\n\n privateKeyXml = rsaPrivateKey.ToXmlString(true); // In privateKeyXml, only the privateExponent changes.\n}\nRun Code Online (Sandbox Code Playgroud)\n预先感谢您的任何帮助!
\n为了使答案有意义,您需要了解两条背景知识:
(n, e, d, p, q, dp, dq, qInv)可能真的只是(n, e, p, q)。
d(“lambda”和“phi”),两种值都有效。从 Vista 到 2019 年,Windows CNG 在导入密钥时丢弃了 d/dp/dq/qInv 值,并使用(我相信)lambda 方法重新计算它们。
由于某种原因,在 2019 年左右,他们要么改为强制使用 phi 进行计算,要么开始保存导入值并在导出时如实报告它们。
不管怎样,这并不重要,因为真正的关键只是(n, e, p, q)。只要这 4 个不改变,你就拥有相同的密钥。
| 归档时间: |
|
| 查看次数: |
413 次 |
| 最近记录: |