【问题标题】:Size of MD5 hash generated生成的 MD5 哈希大小
【发布时间】:2011-08-09 08:04:58
【问题描述】:

我将使用 MD5 散列来存储加密密码。密码长度可以是 6 到 40 个字符。存储加密密码所需的数据库列大小是多少。另外,如果 40 个字符的哈希大小非常大,那么 20 个字符的密码需要多少哈希大小?

我正在使用FormsAuthentication.HashPasswordForStoringInConfigFile(stringToEncrypt, "MD5"); 生成哈希以存储在数据库中。

【问题讨论】:

  • 散列 != 加密
  • 也不要使用 MD5 作为密码。使用 BCrypt 或 SCrypt 等计算量大的哈希算法,这样它们就很难被暴力破解。

标签: c# hash form-authentication


【解决方案1】:

哈希算法总是将任意大小的消息映射到固定长度的表示。换句话说,您可以散列一个空字符串或许多 GB 的信息。哈希大小始终是固定的。

在您的情况下,哈希大小为 128 位。当转换为 ASCII 字符串时,它将是一个仅包含十六进制数字的 32 个字符的字符串。

【讨论】:

  • 非常感谢。我将使用一个 32 字符的列来存储散列密码。
  • 请记住,如果您手动对密码进行哈希处理,您就是doing it wrong。请use bcrypt.
【解决方案2】:

http://msdn.microsoft.com/en-us/library/system.security.cryptography.md5.aspx

MD5 算法的散列大小为 128 位,与被散列的字符串长度无关。

考虑使用更新的散列函数,例如 SHA 256。

【讨论】:

【解决方案3】:

无论输入多长,MD5 哈希值总是正好为 16 字节(128 位)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-05
    • 2017-05-24
    • 1970-01-01
    • 2011-07-26
    • 2011-08-17
    • 2015-08-14
    • 1970-01-01
    • 2018-08-08
    相关资源
    最近更新 更多