加载我的RSACryptoServiceProvider rsa对象后,我想为我的AES对象创建一个密钥。因为我不需要存储AES密钥(我只需要它在我的prv端解密)我想我不需要存储它,我可以使用我的公钥生成它。
我以为做rsa.Encrypt(byte []有4个硬编码字节);会生成我需要的数据。事实证明,即使使用相同的数据,我每次调用此函数时都会得到不同的结果。因此,如果每次都有不同的话,我就无法重新创建AES密钥。
如何以可以随时重新创建的方式使用RSA生成数据?
答案 0 :(得分:2)
您不使用公钥生成AES密钥。使用随机数生成器生成AES密钥,并使用收件人的公钥对其进行加密。在.NET中,您将拥有AES功能AesCryptoServiceProvider和密钥传输功能RSACryptoServiceProvider。加密要发送给Bob的数据的正常事件序列是:
当Bob收到此数据时,他使用RSA私钥撤消这些步骤。
请注意,这是对CMS和PGP等邮件加密标准所做操作的简要说明。一般而言,您应该考虑使用其中之一的C#实现,而不是重新发明轮子。
编辑
System.Security.Cryptography.Pkcs Namespace中有几个.NET类似乎与CMS有关。我没有用过它们。