2014-12-27 48 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

相关问题