我有一个简单的事情要做:我想使用AES算法和pem文件中包含的密钥来加密数据,如页面上所示:http://msdn.microsoft.com/en-us/library/sb7w85t6.aspx
在此示例中,每次运行该功能时都会创建一个新的加密密钥。
但是我需要从pem文件或xml文件中读取此密钥,但找不到解决方法。
是否有一种简单的方法可以从pem文件中读取密钥并将其转换为字节数组(byte [])?
我正在使用C#-.net Framework 3.5,文件中的密钥是我们合作伙伴的RSA公钥。
最佳答案
RSA密钥输入哪种XML文件?
.Net的RSACryptoServiceProvider
类可以使用FromXmlString
方法以以下格式从XML读取公共密钥:
<RSAKeyValue>
<Modulus>3EgNS5XumwoQYU4uvr2OTtlZ4YJWUcGqTAVLQPtzejB7JSiETGdveuH7jGRFi2lNqruRL+SGpr6KJvvijG7wOQheIsJC48lDnS692pZH3rDcWgGuqjwssFKhJ5GSu3Tetrf4DOKVOeTaG5cU0pATV6aDU0Npy0a+5vkU5e3+5jE=</Modulus>
<Exponent>AQAB</Exponent>
</RSAKeyValue>
编辑
据我了解,您正在使用RSA公钥作为AES对称密钥。不要这样做!它无需采取任何措施来保护您的数据就增加了安全感。打个比方,这就像发送保险箱和钥匙一样,但是首先将钥匙放在粉红色的盒子里。如果以这种方式进行操作,则获得公用RSA密钥的任何人都将能够解密您的数据。根本不会使用RSA私钥。
如果第三方强迫您以这种方式进行操作,请向他们显示此答案,或询问任何体面的密码学家。禁止他们这样做
您应该做的是创建一个随机AES密钥,使用RSA公钥对其进行加密,然后将加密的密钥与加密的数据一起发送。这样,只有拥有私有RSA密钥的人才能读取数据,因为其他任何人都无法解密对称AES密钥。
关于c# - 如何从Pem文件或xml文件中读取RSA公钥,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1797986/