2016-04-25 29 views
1

我想在python和shell(OSX上的zsh)中使用md5。如何在不添加尾隨' n'的情況下散列字符串?

我得到這個:

在蟒蛇:

>>> hashlib.md5("zoo".encode('utf-8')).hexdigest() 
'd2cbe65f53da8607e64173c1a83394fe' 

與巖組:

$ echo "zoo" | md5 
ace34ff0a763d9f382cbe6b219fcac7c 

因爲我也有:

>>> hashlib.md5("zoo\n".encode('utf-8')).hexdigest() 
'ace34ff0a763d9f382cbe6b219fcac7c' 

在Python中,我認爲我的zsh命令在對它進行哈希處理之前在字符串中添加了一個(不需要的)後綴'\ n'。

爲什麼會發生這種情況,我該如何避免這種情況?

回答

3

在這裏你去:

kent$ echo -n 'zoo'|md5sum 
d2cbe65f53da8607e64173c1a83394fe 

kent$ echo 'zoo'|md5sum 
ace34ff0a763d9f382cbe6b219fcac7c 
+0

所以這是更大的'echo'比'md5'問題的問題。我不知道'-n'標誌,謝謝你的信息! 雖然我在我的操作系統上沒有md5sum,但它並沒有真正改變任何與md5。 – vmonteco

+0

@vmonteco我沒有這裏的md5 ..^_ * ..我認爲你不應該讓md5命令/函數來處理字符串,它只是用**給定的**字符串來計算md5摘要。如果字符串中包含換行符,則由您決定:輸入命令 – Kent

+0

這很有意義。 :)儘管知道兩種解決方案仍然有用!感謝您的幫助。 – vmonteco

2

我只是發現:

md5命令有一個-s標誌,允許直接傳遞的參數爲一個字符串。

所以:

$ md5 -s "zoo" 
MD5 ("zoo") = d2cbe65f53da8607e64173c1a83394fe 

相當愚蠢的,是我不好。

相關問題