尝试使用bash命令和PHP的hash()函数生成哈希时,我得到了不同的结果.我查看了之前的问题,最常见的问题是字符串中隐藏了一个新行或其他字符,但是我在实际字符串上运行函数而不是文件,所以这不是问题.
例如:
击:
md5sum <<< hello :b1946ac92492d2347c6235b4d2611184
sha256sum <<< hello :5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03
PHP的hash()函数:
hash('md5', 'hello') :9dd4e461268c8034f5c8564e155c67a6
hash('sha256', 'hello') :2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
我在这里错过了什么?为什么价值不同?
因为md5sum在对其进行散列之前会在输入中附加换行符
PHP等价物是:
echo hash('md5', "hello\n");
Run Code Online (Sandbox Code Playgroud)
它将产生与之b1946ac92492d2347c6235b4d2611184相同的值
md5sum <<< hello
Run Code Online (Sandbox Code Playgroud)
如果要禁止将换行包含在bash生成的哈希中,请使用
echo -n hello | md5sum
Run Code Online (Sandbox Code Playgroud)