Base64 + sha256没有给出预期的结果

时间:2014-03-08 00:55:33

标签: php

我需要弄清楚为什么我会得到错误的结果,这就是事情:

预期结果

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

1 个答案:

答案 0 :(得分:1)

hash默认返回其输出的十六进制编码字符串,而您希望它返回原始字节。幸运的是,它接受了第三个论点;将它设置为true,如下所示:

echo base64_encode(hash("sha256", $pass.$salt', true));