Изменение метода дайджеста по умолчанию в его опасном

Попытка изменить метод дайджеста по умолчанию на его опасный. Ниже приведен фрагмент кода. Вопрос (ы) - должен ли я получить такой же подписанный результат? Правильно ли я настраиваю метод дайджеста?

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'

1 ответ

Решение

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'))
Другие вопросы по тегам