Was ist das Python-Äquivalent des folgenden Perl-Codes?Wie wird der Kryptoschlüssel für Pythons MD5-Modul festgelegt?
Die Python hashlib.md5 scheint nicht ein "kryptografisches Schlüssel" Argument zu nehmen. Es akzeptiert nur 1 Argument.
Was ist das Python-Äquivalent des folgenden Perl-Codes?Wie wird der Kryptoschlüssel für Pythons MD5-Modul festgelegt?
Die Python hashlib.md5 scheint nicht ein "kryptografisches Schlüssel" Argument zu nehmen. Es akzeptiert nur 1 Argument.
Sie müssen die hmac module zusammen mit md5 oder sha verwenden. Standardmäßig verwendet es md5:
In [1]: import hmac, hashlib
In [2]: hmac.new('key', 'msg').hexdigest()
Out[2]: '18e3548c59ad40dd03907b7aeee71d67'
In [3]: hmac.new('key2', 'msg').hexdigest()
Out[3]: 'a4bde113179bc2a7c6ac9ad7309ea073'
In [4]: hmac.new('key', 'msg', hashlib.sha256).hexdigest()
Out[4]: '2d93cbc1be167bcb1637a4a23cbff01a7878f0c50ee833954ea5221bb1b8c628'
Ihr Beispiel wohl aussehen würde, so etwas wie:
hmac.new(CryptoKey, '^'.join([login, seq, time, amo]), hashlib.md5).hexdigest()
Werfen Sie einen Blick auf this python library documentation about hmac
Was möchten Sie wahrscheinlich ist:
import hmac
hmac_object = hmac.new(crypto_key)
hmac_object.update('^'.join([login, seq, time, amo, ''])
print hmac_object.hexdigest()
Verwenden Sie am besten .update() Da müssen Sie die hmac-Klasse nicht jedes Mal instanziieren, und es ist ein ernsthafter Leistungsschub, wenn Sie viele Hex-Digests der Nachricht haben wollen.
Eine andere Lösung, basierend auf PyCrypto:
from Crypto.Hash import HMAC
print HMAC.new(CryptoKey, '^'.join([login, seq, time, amo, ''])).hexdigest()
+1 für hashlib anstelle der veralteten md5/sha-Modulen – DNS