2014-12-27 1 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'는 서명자를 만들 때 * 사용됩니다. –

답변

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')) 

출력 :

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')) 
: 기본이 방법을 소화 오버라이드 (override) 할 경우

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

, 당신은 서명자 객체를 생성하기 전에 클래스 속성을 수정해야

+0

@MartijnPieters, 수정 해 주셔서 감사합니다. – falsetru

+0

나는 OP가 원래의 실수를 저지른 것을보고, 그들은'sha2'를 기대했다. 자유롭게 적응하십시오. –

관련 문제