2

デフォルトのダイジェスト方法を変更しようとすると危険です。コード スニペットは次のとおりです。質問 - 同じ署名付きの結果を取得する必要がありますか? ダイジェスト方式を正しく設定していますか?

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

1 に答える 1

3

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

デフォルトのダイジェスト メソッドをオーバーライドする場合は、署名者オブジェクトを作成する前に class 属性を変更する必要があります。

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'))
于 2014-12-27T17:17:43.713 に答える