Как установить криптоключ для модуля Python MD5?

StackOverflow https://stackoverflow.com/questions/697134

  •  22-08-2019
  •  | 
  •  

Вопрос

Что такое Python-эквивалент следующего кода Perl?

hmac_md5_hex($login . "^" . $seq . "^" . $time . "^" . $amo . "^", $CryptoKey);

Python hashlib.md5, похоже, не принимает аргумент «криптографический ключ».Он принимает только 1 аргумент.

Это было полезно?

Решение

Вы должны использовать модуль hmac вместе с md5 или sha.По умолчанию он использует 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'

Ваш пример, вероятно, будет выглядеть примерно так:

hmac.new(CryptoKey, '^'.join([login, seq, time, amo]), hashlib.md5).hexdigest()

Другие советы

Взгляни на эта документация библиотеки Python о hmac

Вероятно, вы хотите:

import hmac
hmac_object = hmac.new(crypto_key)
hmac_object.update('^'.join([login, seq, time, amo, ''])
print hmac_object.hexdigest()

Вероятно, лучше всего использовать .обновлять() поскольку таким образом вам не нужно каждый раз создавать экземпляр класса hmac, и это серьезно повышает производительность, если вы хотите иметь много шестнадцатеричных дайджестов сообщения.

Другое решение, основанное на ПиКрипто:

from Crypto.Hash import HMAC
print HMAC.new(CryptoKey, '^'.join([login, seq, time, amo, ''])).hexdigest()
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top