【问题标题】:User provided key in aes encryption c#用户在 aes 加密 c# 中提供的密钥
【发布时间】:2016-08-11 08:59:23
【问题描述】:

AES256 使用 256 位密钥,即 32 个字节的数据,就 ASCII 字符而言,它是 32 个字符。它主要是系统生成的密钥。 我正在开发一个使用 C# 中的 AES 类加密纯文本文件的项目。在这个项目中,有一个窗口表单要求用户提供密钥。有没有办法使用用户提供的密钥加密纯文本?

【问题讨论】:

标签: c# cryptography aes


【解决方案1】:

您不应该向用户询问 key。您应该向用户询问密码短语,然后使用行业标准之一key derivation algorithms 从密码短语生成密钥,例如PBKDF2。 .Net 使用 Rfc2898DeriveBytes 类对此提供支持。请参阅链接中的示例以了解如何使用它。另外,请确保生成一个好的初始化向量并将其添加到加密文件中。

您不应将系统生成的密钥与用户提供的密码短语混用。如果您生成密钥,那么您必须具有适当的密钥交换协议,例如。 TLS。

请花一些时间来记录自己有关基本加密的信息。 The Handbook 是一个很好的入门读物(而且是免费的)。不要发布又一个 Broken Crypto 产品...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多