PowerShell Get-Hash与Unix md5sum生成MD5哈希不一致问题
哈希不匹配的原因及解决办法
我来帮你理清楚这个问题哈~你遇到的MD5哈希不一致,核心是PowerShell和Ubuntu对输入内容的处理不一样:
问题根源
- 在Ubuntu里用
echo "hello world"时,echo默认会在字符串末尾偷偷加一个换行符(\n),所以实际参与MD5计算的内容是hello world\n - 但在PowerShell里,你直接传的
"hello world"是纯字符串,没有额外的换行符,计算哈希的内容就是hello world,两者内容不一样,哈希自然不匹配。
快速验证与修复
方法1:让Ubuntu输出和PowerShell一致的哈希
在Ubuntu中给echo加-n参数,强制不添加换行符,这样计算的就是和PowerShell一样的纯文本哈希:
echo -n "hello world" | md5sum
这时候得到的哈希就是 E42B054623B3799CB71F0883900F2764,和PowerShell的结果完全匹配。
方法2:让PowerShell输出和Ubuntu默认一致的哈希
如果需要PowerShell计算带换行的内容,只需要在字符串后面加上PowerShell的换行符(`n)再计算:
"hello world`n" | Get-Hash -Algorithm MD5
此时生成的哈希就会和Ubuntu默认echo "hello world" | md5sum的结果一致啦。
内容的提问来源于stack exchange,提问作者Jigar
相关产品推荐
相关产品推荐

