栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

哈希密码字段使用哪种数据类型以及什么长度?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

哈希密码字段使用哪种数据类型以及什么长度?

更新:仅使用哈希函数不足以存储密码。您应该阅读Gilles在该主题上的答案,以获取更详细的解释。

对于密码,请使用增强密钥的哈希算法,例如Bcrypt或Argon2i。例如,在PHP中,使用password_hash()函数(默认情况下使用Bcrypt)。

$hash = password_hash("rasmuslerdorf", PASSWORD_DEFAULT);

结果是一个类似于以下内容的60个字符的字符串(但是数字会有所不同,因为它会生成唯一的盐)。

$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a

使用SQL数据类型

CHAr(60)
存储Bcrypt哈希的这种编码。请注意,此函数不会编码为十六进制数字的字符串,因此我们无法轻松地将其以十六进制形式存储为二进制。

其他散列函数仍具有用途,但不能用于存储密码,因此,我将在下面保留原始答案,该答案写于2008年。


这取决于您使用的哈希算法。不管输入如何,散列总是产生相同长度的结果。通常用一系列十六进制数字表示文本中的二进制哈希结果。或者,您可以使用该

UNHEx()
函数将十六进制数字的字符串减少一半。

  • MD5生成一个128位哈希值。您可以使用CHAR(32)或BINARY(16)
  • SHA-1生成一个160位的哈希值。您可以使用CHAR(40)或BINARY(20)
  • SHA-224生成224位哈希值。您可以使用CHAR(56)或BINARY(28)
  • SHA-256生成256位哈希值。您可以使用CHAR(64)或BINARY(32)
  • SHA-384生成384位哈希值。您可以使用CHAR(96)或BINARY(48)
  • SHA-512生成512位哈希值。您可以使用CHAR(128)或BINARY(64)
  • BCrypt生成依赖于实现的448位哈希值。您可能需要CHAR(56),CHAR(60),CHAR(76),BINARY(56)或BINARY(60)

自2015年起,NIST 建议在需要互操作性的哈希函数的任何应用程序中使用SHA-256或更高版本。但是NIST不建议使用这些简单的哈希函数来安全地存储密码。

较小的散列算法有其用途(例如在应用程序内部,而不是用于交换),但是众所周知,它们是可破解的。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/376259.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号