MD5 在 PHP 和 ash/OSX 之间给出不同的结果
MD5 gives different result between PHP and ash/OSX
我正在 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
此外,用谷歌搜索 online md5 generating scripts 总是 return 与上述 PHP 相同的结果。
为什么会这样? md5 和 md5sum 之间的区别是什么(如果有的话),如果有区别,为什么 busybox 和 OSX 之间的命名不一致?
如何让 PHP 生成与我的 Busybox 生成的哈希值相同的哈希值?另一种方法(使 Busybox 生成一个 PHP md5)也可以,但它必须与我的基本 Busybox 版本一起使用。
发现答案很简单。
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
我正在 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
此外,用谷歌搜索 online md5 generating scripts 总是 return 与上述 PHP 相同的结果。
为什么会这样? md5 和 md5sum 之间的区别是什么(如果有的话),如果有区别,为什么 busybox 和 OSX 之间的命名不一致?
如何让 PHP 生成与我的 Busybox 生成的哈希值相同的哈希值?另一种方法(使 Busybox 生成一个 PHP md5)也可以,但它必须与我的基本 Busybox 版本一起使用。
发现答案很简单。
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