【问题标题】:How do i generate random data with RSA?如何使用 RSA 生成随机数据?
【发布时间】:2010-06-14 08:02:03
【问题描述】:

加载我的 RSACryptoServiceProvider rsa 对象后,我想为我的 AES 对象创建一个密钥。因为我不需要存储 AES 密钥(我只需要它在我的 prv 端解密)我想我不需要存储它,我可以用我的公钥生成它。

我认为 rsa.Encrypt(byte[] with 4 hardcoded bytes);会生成我需要的数据。事实证明,每次我调用这个函数时,即使使用相同的数据,我也会得到不同的结果。因此,如果每次都不同,我无法重新创建 AES 密钥。

如何使用 RSA 以我可以随时重新创建的方式生成数据?

【问题讨论】:

    标签: .net random rsa aes


    【解决方案1】:

    您不会使用您的公钥生成 AES 密钥。您使用随机数生成器生成 AES 密钥,并使用收件人的公钥对其进行加密。例如,在 .NET 中,您将拥有一个 AesCryptoServiceProvider 用于您的 AES 功能和一个 RSACryptoServiceProvider 用于您的关键传输功能。加密要发送给 Bob 的数据的正常事件顺序是:

    1. 使用 AesCryptoServiceProvider.GenerateKey 方法。
    2. 使用 AES 加密您的数据。
    3. 从密钥中检索 AES 密钥 AES 实例的属性。
    4. 使用 Bob 的 RSA 加密此 AES 密钥 键使用 RSACryptoServiceProvider。
    5. 将此与加密数据一起传输到 鲍勃。

    当 Bob 收到此数据时,他使用他的 RSA 私钥撤消这些步骤。

    请注意,这是对 CMS 和 PGP 等消息加密标准中所做工作的简化描述。通常,您应该考虑使用其中之一的 C# 实现,而不是重新发明轮子。

    编辑

    System.Security.Cryptography.Pkcs Namespace 中有几个 .NET 类似乎与 CMS 打交道。我没用过。

    【讨论】:

    • 我从未听说过 .NET 库中的任何一个实现。
    • 我等了几天或两周,希望能有另一个。
    猜你喜欢
    • 1970-01-01
    • 2017-07-26
    • 2014-09-25
    • 2013-06-23
    • 2015-07-26
    • 2019-09-20
    • 2011-02-19
    • 2011-10-19
    • 1970-01-01
    相关资源
    最近更新 更多