请特别注意 **$length** 参数!它正是 **返回字符串的长度**,而不是原始二进制哈希结果的长度。
我在这个问题上遇到过很大的麻烦——
我认为 `hash_pbkdf2(...false)` 应该等于 `bin2hex(hash_pbkdf2(...true))`,就像 `md5($x)` 等于 `bin2hex(md5($x, true))` 一样。然而我错了。
hash_pbkdf2('sha256', '123456', 'abc', 10000, 50, false); // 返回字符串(50) "584bc5b41005169f1fa15177edb78d75f9846afc466a4bae05"
hash_pbkdf2('sha256', '123456', 'abc', 10000, 50, true); // 返回字符串(50) "XKŴ � �Qw�u��j�FjK� ��BFW� YpG �mp.g2�`; N�"
bin2hex(hash_pbkdf2('sha256', '123456', 'abc', 10000, 50, true)); // 返回字符串(100) "584bc5b41005169f1fa15177edb78d75f9846afc466a4bae05119c82424657c81b5970471f098a6d702e6732b7603b194efe"
所以我添加了这样的注释。希望它能帮助像我一样的其他人。