2014-12-27 28 views
1

嘗試更改其默認摘要方法的默認值。代碼片段如下。問題 - 我應該得到相同的簽名結果嗎?我是否正確設置摘要方法?將其默認摘要方法更改爲其危險

from itsdangerous import Signer 
import hashlib 
s = Signer('secret-key') 
s.default_digest_method = staticmethod(hashlib.sha1) 
print ('sha1-->', s.sign(b'my string')) 
s.default_digest_method = staticmethod(hashlib.sha256) 
print ('sha2-->', s.sign(b'my string')) 

結果是:當創建簽名者,除非digest_method不通過

sha1--> b'my string.wh6tMHxLgJqB6oY1uT73iMlyrOA' 
sha2--> b'my string.wh6tMHxLgJqB6oY1uT73iMlyrOA' 
+0

當創建簽名者時使用'default_digest_method'。 – 2014-12-27 17:19:28

回答

2

default_digest_method被使用。使用digest_method說法:

import hashlib 
from itsdangerous import Signer 

s = Signer('secret-key', digest_method=hashlib.sha1) 
print('sha1-->', s.sign(b'my string')) 
s = Signer('secret-key', digest_method=hashlib.sha256) 
print('sha2-->', s.sign(b'my string')) 

輸出:

sha1--> b'my string.wh6tMHxLgJqB6oY1uT73iMlyrOA' 
sha2--> b'my string.PVHY4OzY_ekIpRd3A5G0vzTkhg8wSod5E3p90JgBCKw' 

如果要覆蓋默認的消化方法,你需要在創建簽名對象之前修改類屬性:

Signer.default_digest_method = hashlib.sha1 
s = Signer('secret-key') 
print('sha1-->', s.sign(b'my string')) 

Signer.default_digest_method = hashlib.sha256 
s = Signer('secret-key') 
print('sha2-->', s.sign(b'my string')) 
+0

@MartijnPieters,感謝您的更正。 – falsetru 2014-12-27 17:18:43

+0

我看到OP做出了原來的錯誤,並且他們期望'sha2'。隨意適應。 – 2014-12-27 17:19:08

相關問題