【问题标题】:How do I retrieve public key from private key in database如何从数据库中的私钥中检索公钥
【发布时间】:2012-12-21 09:28:21
【问题描述】:

我正在创建一对 RSA 密钥。我将公钥存储在数据库中,将私钥存储在文件中(加密)。我使用公钥来加密工作密钥。工作密钥反过来加密数据库中的列数据。在数据库中,我有一个存储工作密钥列表及其相应公钥的表。当用户想要查看表中的某些信息时,他必须提供应用程序用来解密相应公钥的私钥,从而解密信息。但是,我怎样才能从私钥中找到对应的公钥呢?我一直在论坛中搜索,但找不到我需要的信息。谢谢!

【问题讨论】:

    标签: c# aes rsa


    【解决方案1】:

    如果您可以访问公钥和私钥的模数,那么您可以简单地对两个(大)整数进行比较。两个密钥都需要模数,并且公钥和私钥的模数始终相同。

    在加密设备和密钥数据库中,ID 通常与密钥一起存储。此密钥通常是(部分)模数上的加密散列。

    【讨论】:

    • 非常感谢!!!我刚刚尝试使用 RSAParameters publicKey = rsa.ExportParameters(false);字符串 publicKeyModulus = Convert.ToBase64String(publicKey.Modulus);和私钥一样。两者的模数相同。
    • 请注意,虽然模数应该对于密钥对是唯一的,但通常最好提前检查这一点,如果模数已知,则拒绝密钥对。这可以例如如果在密钥对生成过程中使用的随机数生成器损坏,请保护您。