我需要弄清楚为什么我会得到错误的结果,这就是事情:
预期结果
Mu0FBjARVsNyDiixnKqyLCCqVunTSPQFCMnOwGQsIWliY2Jh
当前结果
MzJlZDA1MDYzMDExNTZjMzcyMGUyOGIxOWNhYWIyMmMyMGFhNTZlOWQzNDhmNDA1MDhjOWNlYzA2NDJjMjE2OQ ==
我使用的代码(php)
echo base64_encode(hash("sha256", $pass.$salt'));
此网站http://www.insidepro.com/hashes.php给出了更贴心的结果
sha256($ pass。$ salt)=> Mu0FBjARVsNyDiixnKqyLCCqVunTSPQFCMnOwGQsIWk =
你可以找到(在网站上,在结果字段附近)a [1],这意味着"哈希在Base64"
事情是......我甚至无法获得网站结果
编辑(谢谢Jon)
现在代码就像这样
echo base64_encode(hash("sha256", $pass.$salt', true));
我得到了与网站相同的结果
现在的问题是两个结果之间的差异
actual result : Mu0FBjARVsNyDiixnKqyLCCqVunTSPQFCMnOwGQsIWk=
expected result : Mu0FBjARVsNyDiixnKqyLCCqVunTSPQFCMnOwGQsIWliY2Jh
答案 0 :(得分:1)
hash
默认返回其输出的十六进制编码字符串,而您希望它返回原始字节。幸运的是,它接受了第三个论点;将它设置为true
,如下所示:
echo base64_encode(hash("sha256", $pass.$salt', true));