代码之家  ›  专栏  ›  技术社区  ›  Shawn Steward

用AES加密文件,用RSA加密密钥-我走对了吗?

  •  2
  • Shawn Steward  · 技术社区  · 15 年前

    我试图设计一个应用程序,将加密文件,以安全地通过发送 蜗牛邮件 RNGCryptoServiceProvider . 然后我用RSA公钥加密这个随机AES密钥。数据的接收者是唯一拥有RSA私钥来解密数据的人。

    我的问题是:

    -根据答案,这的确是正确的做法。

    编辑-谢谢你的回复。现在我真正想知道的是:
    MSDN 说将密钥保存到文件是不安全的,那么如何才能实现这一点呢?

    4 回复  |  直到 15 年前
        1
  •  3
  •   Dan LaRocque    15 年前

    PGP 除非有充分的理由不这么做。PGP是电子邮件中常用的一种开放的、普遍存在的混合加密标准。PGP有许多实现。我唯一知道的.NET是 BouncyCastle crypto project's C# library . PGP实际上提供了您所描述的功能的超集;例如,PGP还可以对消息进行数字签名。

    关于私钥存储。典型的解决方案是在将私钥写入磁盘之前对其进行对称加密。只有私钥的真正所有者才知道密码秘密,而且他们不会告诉任何人。这样,即使攻击者获得了私钥文件,他们仍然必须泄露秘密或强制使用对称密码。我所知道的所有PGP实现都是这样做的。

    请不要重新实现PGP,如果它做你想要的。PGP得到了广泛的支持。此外,像我这样的凡人(大概还有你自己)几乎没有机会把一切都做好。

        2
  •  3
  •   Jesse C. Slicer    15 年前

    至于你的第一部分,这是绝对的方式去做。这叫做 hybrid cryptosystem .

        3
  •  2
  •   Jason    15 年前

        4
  •  0
  •   tc.    15 年前

    保存私钥的传统方法(在GPG/PGP/PKCS#1/PKCS#8中使用)是使用强密码短语对其进行密码保护并将其粘贴到文件中。大多数密钥库管理工具都有一种方法可以导出PKCS#1/PKCS#8格式的密钥—在一台机器上生成密钥,用密码导出密钥,然后在另一台机器上导入密钥;为了在机器之间传输密钥,密钥只在密钥库之外。