Я пытаюсь переписать node.js функцию декодирования в python
это функция, которую я пытаюсь переписать
module.exports.decrypt = function (data, key, iv, hmacKey) {
iv = iv.slice(0, 16)
var decipherer = crypto.createDecipheriv('aes-128-ctr', key, iv)
var hmac
if (hmacKey) {
hmac = crypto.createHmac('sha1', hmacKey).update(data).digest()
}
return {
data: decipherer.update(data),
hmac: hmac
}
}
параметр key
генерируется функцией crypto.pbkdf2Sync
стандартной библиотеки узла.
В Python я реализовал
from Crypto.Cipher import AES
from Crypto.Util import Counter
def decrypt(data, key, iv, hmac=None):
iv = iv[:16]
ctr = Counter.new(128)
cipher = AES.new(key, mode=AES.MODE_CTR, IV=iv, counter=ctr)
return cipher.decrypt(data)
Я предоставил функции дешифрования python те же данные, которые получает функция js.
поскольку параметры data
и key
, iv
, ожидаемые функцией js, являются двоичными буферами, я скопировал их в код python в виде шестнадцатеричных строк, а затем использовал binascii.unhexlify
в коде python перед передачей их в ecrypt
функция Python.
поэтому аргументы, которые я предоставляю обеим функциям (hex)
data 972acf88c5d7
key 129b6e542600889a75ec7659d9dc23df
iv 31323331323331323331323331323331323331323331313233313233313233313233
Функция python возвращает бред.
кто-нибудь может помочь?
спасибо!