【问题标题】:PHP: What maximum length to set a password field in a database?PHP:在数据库中设置密码字段的最大长度是多少?
【发布时间】:2012-02-04 12:15:07
【问题描述】:

当我使用hash('sha512', $salt . $password); 对我的密码进行哈希处理时,数据库中密码列的最大长度应该是 512 还是被砍掉是否重要?或者它可能比512长吗?谢谢。

【问题讨论】:

标签: php database hash


【解决方案1】:

SHA512 实际上返回一个长度为 128 的字符串。所以简短的回答是,您的字段只需 128 个字符。

【讨论】:

  • 所以应该是varchar(128)? ;p
  • @Andy Lobel - 宾果游戏,除非你使用二进制列
  • @AndyLobel 实际上,如果你知道它会精确到 128 个字符,你可以使用CHAR(128)
【解决方案2】:

SHA512 输出 512 位或 64 字节。您可以将这 64 个字节存储在一个二进制列中,由 128 个十六进制数字表示...

你需要 128 码..

留给See here

【讨论】:

    【解决方案3】:

    只是一个查看哈希密码长度的演示

    $password = 'password';
    $salt = 'salt';
    
    $hash = hash('sha512', $salt.$password);
    
    echo strlen($hash); // OUTPUTS 128
    

    【讨论】:

      【解决方案4】:

      这取决于您使用的哈希算法生成的字符串的长度。 here 发布的评论显示,您选择的 sha512 算法生成的字符串长度为 128 个字符。因此,您的字段应为 128 个字符。它可以更多,但没有必要。减少它会减少密码,从而使您的散列密码“无效”。

      【讨论】:

      • 哈希的子字符串仍然有效(因为子字符串操作是“完整”哈希的一部分),但理论上不太安全。 您只需要记住在代码中添加子字符串以使其与数据库匹配!
      猜你喜欢
      • 2010-09-25
      • 1970-01-01
      • 2023-01-05
      • 1970-01-01
      • 1970-01-01
      • 2017-07-07
      • 2023-03-20
      • 2013-06-28
      相关资源
      最近更新 更多