请特别注意 **$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"
所以我添加了这样的注释。希望它能像帮助我一样帮助其他人。