2009-03-30 12 views

Antwort

13

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() 
+0

+1 für hashlib anstelle der veralteten md5/sha-Modulen – DNS

3

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.

0

Eine andere Lösung, basierend auf PyCrypto:

from Crypto.Hash import HMAC 
print HMAC.new(CryptoKey, '^'.join([login, seq, time, amo, ''])).hexdigest()