Argon2id的PHP实现为开发人员生成了一个salt。应用程序如何跟踪这种盐?作为开发人员,我如何考虑备份,以及确保我不会失盐?
正如Luis所说,salt存储在散列函数的结果中,由$
分隔:
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
。
即使the documentation for the password_hash()
function将函数返回值标记为“hash”,它实际上也是一个复合字符串,它还包含salt和一些元数据来标识所使用的算法。伴侣password_verify()
function解析这些信息以做正确的事情。
所以你只需要存储password_hash()
的结果。