我很困惑为什么我在PHP和OpenSSL中看到md5散列的不同结果.
这是我正在运行的代码:
php -r "echo md5('abc');"
Run Code Online (Sandbox Code Playgroud)
结果:900150983cd24fb0d6963f7d28e17f72
这个:
echo abc | openssl md5
Run Code Online (Sandbox Code Playgroud)
结果:0bee89b07a248e27c83fc3d5951213c1
为什么?
jde*_*aan 21
只有一种方法可以计算MD5.
一个盲目的猜测是第二个还包括被散列的字符串内的换行符.
是的,验证了它.而已.
众所周知,问题是echo打印了一个额外的换行符.
但是,提出的解决方案(echo -n)并不完全正确.根据POSIX标准," 实现不支持任何选项. "如果你不使用它,你将使世界变得更好.使用
printf %s abc | openssl md5
Run Code Online (Sandbox Code Playgroud)
或者干脆
printf abc | openssl md5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3061 次 |
| 最近记录: |