【发布时间】:2024-01-22 20:14:01
【问题描述】:
我在使用 php hash() 函数时遇到了非常烦人的问题。对于某些字符串,返回的哈希只是一个空字符串,而对于其他字符串,它可以正常工作。
我写了以下内容:
$new_salted_pw = $salt.$pepper.$new_pw;
echo $new_salted_pw."... ";
$hash = hash("sha256", $new_salted_pw);
if($hash>120)
$hash = substr($hash, 120);
echo $hash;
我用geheim23和Geheim23这两个密码进行测试,所以只有1个字符的区别。
结果是:
k0g3po32ggd0sv8oehgklbp2bd8eddxXMaxGTPJSQZSAJzgZSgaZxvUfGeheim23... d79e2044baa8a0a7363c88b4a2224277ac883eabc22cd28d61c1cdc31bb1c3fc
k0g3po32ggd0sv8oehgklbp2bd8eddxXMaxGTPJSQZSAJzgZSgaZxvUfgeheim23...
第二个没有哈希。它是空的。相同的代码,没有结果。
更有趣的是,以完全相同的方式散列 geheim23 在我的脚本的不同部分中工作,没有问题。
那时我决定询问 *,它是否知道 PHP 为什么要对我这样做,如何解决它,或者我可以使用什么函数来代替 hash()。
谢谢。
【问题讨论】: