Argon2id如何在PHP中存储盐?

时间:2019-02-13 17:45:42

标签: php hash passwords salt

Argon2id的PHP实现为开发人员生成了一个盐。应用程序如何跟踪这种盐?作为开发人员,我该如何考虑备份,否则如何确保我不会输钱?

2 个答案:

答案 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()的结果即可。