【发布时间】:2011-11-13 02:51:53
【问题描述】:
根据 PHP 的文档,bcrypt salt 是由
“$2a$”,两位数的成本参数,“$”,字母表中的 22 位数字“./0-9A-Za-z”
所以,如果我使用 crypt() 函数对我的密码进行哈希处理,则生成的输出包括前 7 个字符($2a$10$,如果 10 是成本参数)作为盐的一部分 - 并且,根据我能在互联网上找到的所有示例,这个完整的输出都被写入 db。
我想知道将这些第一个字符与其余的盐和加密数据一起存储有什么意义。它们的含义对我来说是完全清楚的,但我真的不明白为什么这些信息应该与哈希的其余部分一起写。它们不是关于算法和计算的自适应成本的“只是”信息吗?那么存储此类与应用程序相关的信息有什么好处呢?而且(即使听起来很幼稚)为什么要将它们披露给最终可以获取我的数据库的攻击者?
【问题讨论】:
标签: php hash crypt bcrypt password-storage