2014-12-27 2 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')) 

Результаты:

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

'default_digest_method' используется при создании * подписчика. –

ответ

2

default_digest_method используется, когда подписывающий создается, если 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

+0

Я вижу, что ОП совершил первоначальную ошибку, и что они ожидали 'sha2'. Не стесняйтесь адаптироваться. –

 Смежные вопросы

  • Нет связанных вопросов^_^