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

Nic*_*iou 2 c# cryptography pem public-key

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

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

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

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

SLa*_*aks 8

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

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

<RSAKeyValue>
    <Modulus>3EgNS5XumwoQYU4uvr2OTtlZ4YJWUcGqTAVLQPtzejB7JSiETGdveuH7jGRFi2lNqruRL+SGpr6KJvvijG7wOQheIsJC48lDnS692pZH3rDcWgGuqjwssFKhJ5GSu3Tetrf4DOKVOeTaG5cU0pATV6aDU0Npy0a+5vkU5e3+5jE=</Modulus>
    <Exponent>AQAB</Exponent>
</RSAKeyValue>
Run Code Online (Sandbox Code Playgroud)

编辑

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

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

不要让他们这样做


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