97
Python MD5哈希與shell上md5sum命令創建的哈希不同。爲什麼?爲什麼由Python創建的MD5哈希與在shell中使用echo和md5sum創建的哈希不同?
>>> import hashlib
>>> h = hashlib.md5()
>>> h.update("mystringforhash")
>>> print h.hexdigest()
86b6423cb6d211734fc7d81bbc5e11d3 # Result from Python
$ echo mystringforhash | md5sum
686687dd68c5de717b34569dbfb8d3c3 - # Result on the shell
其實這是當我告訴人們使用更多的Python或海格水平我用的是大的例子之一語言,而不是shell腳本的工作,這通常被認爲在shell腳本中更好。混合數據和代碼的性質以及每個命令的不同語法都會使shell腳本不可見地出錯 – jsbueno 2011-04-17 17:05:58
如果只給出的是「shell」,那麼您不能相信echo會產生可工作的-n標誌。 POSIX表示以下關於「echo」:「如果第一個操作數是」-n「,或者如果任何操作數包含」「字符,則結果是實現定義的。」 (來源:http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html)。改用'printf'。 –
2012-12-10 06:10:39