2

我有一件简单的事情要做:我想使用 AES 算法和 pem 文件中包含的密钥来加密数据,如页面所示:http: //msdn.microsoft.com/en-us/library/sb7w85t6.aspx

在此示例中,每次运行该函数时都会创建一个新的加密密钥。但我需要从 pem 文件或 xml 文件中读取此密钥,但我找不到这样做的方法。

有没有一种简单的方法可以从 pem 文件中读取密钥并将其转换为字节数组 (byte[]) ?

我正在使用 C# - .net Framework 3.5,文件中的密钥是我们合作伙伴的 RSA 公钥。

4

1 回答 1

7

RSA 密钥在哪种 XML 文件中?

.Net 的类可以使用以下格式RSACryptoServiceProvider的方法从 XML 中读取公钥:FromXmlString

<RSAKeyValue>
    <Modulus>3EgNS5XumwoQYU4uvr2OTtlZ4YJWUcGqTAVLQPtzejB7JSiETGdveuH7jGRFi2lNqruRL+SGpr6KJvvijG7wOQheIsJC48lDnS692pZH3rDcWgGuqjwssFKhJ5GSu3Tetrf4DOKVOeTaG5cU0pATV6aDU0Npy0a+5vkU5e3+5jE=</Modulus>
    <Exponent>AQAB</Exponent>
</RSAKeyValue>

编辑

据我了解您的程序,您使用 RSA 公钥作为 AES 对称密钥。 不要这样做! 它增加了安全的假象,而无需做任何事情来保护您的数据。打个比方,这就像送一个保险箱和它的钥匙,但先把钥匙放在一个粉红色的盒子里。如果你这样做,任何获得公共RSA 密钥的人都可以解密你的数据;根本不会使用私有 RSA 密钥。

如果第三方强迫您这样做,请向他们展示此答案,或询问任何半体面的密码学家。

不要让他们这样做


您应该做的是创建一个随机 AES 密钥,使用 RSA 公钥对其进行加密,然后将加密密钥与加密数据一起发送。这样,只有拥有 RSA 私钥的人才能读取数据因为其他人无法解密对称 AES 密钥。

于 2009-11-25T16:10:52.943 回答