【发布时间】:2016-08-11 08:59:23
【问题描述】:
AES256 使用 256 位密钥,即 32 个字节的数据,就 ASCII 字符而言,它是 32 个字符。它主要是系统生成的密钥。 我正在开发一个使用 C# 中的 AES 类加密纯文本文件的项目。在这个项目中,有一个窗口表单要求用户提供密钥。有没有办法使用用户提供的密钥加密纯文本?
【问题讨论】:
标签: c# cryptography aes
AES256 使用 256 位密钥,即 32 个字节的数据,就 ASCII 字符而言,它是 32 个字符。它主要是系统生成的密钥。 我正在开发一个使用 C# 中的 AES 类加密纯文本文件的项目。在这个项目中,有一个窗口表单要求用户提供密钥。有没有办法使用用户提供的密钥加密纯文本?
【问题讨论】:
标签: c# cryptography aes
您不应该向用户询问 key。您应该向用户询问密码短语,然后使用行业标准之一key derivation algorithms 从密码短语生成密钥,例如PBKDF2。 .Net 使用 Rfc2898DeriveBytes 类对此提供支持。请参阅链接中的示例以了解如何使用它。另外,请确保生成一个好的初始化向量并将其添加到加密文件中。
您不应将系统生成的密钥与用户提供的密码短语混用。如果您生成密钥,那么您必须具有适当的密钥交换协议,例如。 TLS。
请花一些时间来记录自己有关基本加密的信息。 The Handbook 是一个很好的入门读物(而且是免费的)。不要发布又一个 Broken Crypto 产品...
【讨论】: