MD5在PHP和ash / OSX之间给出了不同的结果

时间:2016-02-04 05:30:24

标签: php md5 busybox md5sum

我在Busybox上创建一个我在PHP脚本中进行比较的哈希值。

然而,结果是不可取的:

BusyBox v1.15.3 echo A|md5sum     bf072e9119077b4e76437a93986787ef  -
MacBook-Air:~ $ echo A|md5        bf072e9119077b4e76437a93986787ef
MacBook-Air:~ $ echo "A"|md5      bf072e9119077b4e76437a93986787ef
[root@centos67 ~] echo "A"|md5sum bf072e9119077b4e76437a93986787ef
.
PHP LAMP: echo md5("A");          7fc56270e7a70fa81a5935b72eacbe29
PHP MAMP: echo md5("A");          7fc56270e7a70fa81a5935b72eacbe29

此外,Google搜索online md5 generating scripts 始终返回与上述PHP相同的结果。

为什么会这样?什么是(如果有的话)md5和md5sum之间的差异,如果存在差异,为什么busybox和OSX之间的命名不一致?

如何让PHP生成Busybox生成的相同哈希?反过来(让Busybox gerenate一个PHP md5)也没关系,但它必须使用我的基本Busybox版本。

1 个答案:

答案 0 :(得分:0)

发现答案很简单。

GNU echo总是以换行符结尾

两种可能的修复方法:

BusyBox v1.15.3 echo -n A|md5sum     7fc56270e7a70fa81a5935b72eacbe29  -
MacBook-Air:~ $ echo -n A|md5        7fc56270e7a70fa81a5935b72eacbe29
MacBook-Air:~ $ echo -n "A"|md5      7fc56270e7a70fa81a5935b72eacbe29
[root@centos67 ~] echo -n "A"|md5sum 7fc56270e7a70fa81a5935b72eacbe29
.
PHP LAMP: echo md5("A");             7fc56270e7a70fa81a5935b72eacbe29
PHP MAMP: echo md5("A");             7fc56270e7a70fa81a5935b72eacbe29

BusyBox v1.15.3 echo A|md5sum        bf072e9119077b4e76437a93986787ef  -
MacBook-Air:~ $ echo A|md5           bf072e9119077b4e76437a93986787ef
MacBook-Air:~ $ echo "A"|md5         bf072e9119077b4e76437a93986787ef
[root@centos67 ~] echo "A"|md5sum    bf072e9119077b4e76437a93986787ef
.
PHP LAMP: echo md5("A\n");           bf072e9119077b4e76437a93986787ef
PHP MAMP: echo md5("A\n");           bf072e9119077b4e76437a93986787ef