Argon2id的PHP实现为开发人员生成了一个盐。应用程序如何跟踪这种盐?作为开发人员,我该如何考虑备份,否则如何确保我不会输钱?
答案 0 :(得分:3)
正如Luis所说,盐被存储在哈希函数的结果中,以$
分隔:
password_hash('secret', PASSWORD_ARGON2I);
将返回如下内容:
$argon2i$v=19$m=1024,t=2,p=2$MEhSZkJLQXUxRzljNE5hMw$33pvelMsxqOn/1VV2pnjmKJUECBhilzOZ2+Gq/FxCP4
位置:
argon2i
是算法v=19
是版本m=1024,t=2,p=2
是内存,迭代和并行性选项MEhSZkJLQXUxRzljNE5hMw
是盐33pvelMsxqOn/1VV2pnjmKJUECBhilzOZ2+Gq/FxCP4
是实际的哈希值。因此,您只需要保存整个字符串,它将保留PHP对其哈希方法所需的一切,例如password_verify
。
答案 1 :(得分:2)
即使the documentation for the password_hash()
function将函数返回值标记为“哈希”,它实际上也是一个复合字符串,其中还包含了salt和一些元数据以标识所使用的算法。同伴password_verify()
function解析此信息以执行正确的操作。
因此,您只需要存储password_hash()
的结果即可。