如何从pem文件或xml文件中读取RSA公钥

时间:2009-11-25 16:05:53

标签: c# cryptography public-key pem

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

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

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

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

1 个答案:

答案 0 :(得分:8)

RSA密钥是什么类型的XML文件?

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

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

修改

据我了解您的程序,您使用RSA公钥作为AES对称密钥。 不要这样做!它增加了安全的假象而没有采取任何措施来保护您的数据。作为类比,它就像发送保险箱及其钥匙一样,但首先将钥匙放在粉红色的盒子里。如果你这样做,任何获得 public RSA密钥的人都能够解密你的数据;私有RSA密钥根本不会被使用。

如果第三方强迫您以这种方式执行此操作,请向他们展示此答案,或者询问任何半身像的密码学家。

不允许他们这样做


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