У меня есть служба nodejs, которая использует шифрование AES для некоторых данных, которые необходимо расшифровать в Python.
Что бы я ни делал, я не могу заставить это работать.
Код NodeJS:
const algorithm = 'aes-128-ctr';
function encryptScript(data, key) {
const cipher = crypto.createCipher(algorithm, key);
let crypted = cipher.update(data, 'utf8', 'hex');
crypted += cipher.final('hex');
return crypted;
}
Я пробовал в Python:
counter = Counter.new(128)
cipher = AES.new(key, AES.MODE_CTR, counter=counter)
print cipher.decrypt(enc.decode("hex"))
Но это не работает.
Моя первая проблема заключается в том, что код Python не принимает ключи, длина которых превышает 32 байта (а код Nodejs делает).
Если я использую криптомодуль NodeJS, расшифровка работает:
function decryptScript(data, key) {
const decipher = crypto.createDecipher(algorithm, key);
let dec = decipher.update(data, 'hex', 'utf8');
dec += decipher.final('utf8');
return dec;
}
Я не знаю, что делает узел, но это, вероятно, связано с некоторым заполнением данных.
Как я могу заставить это работать?
(Я предпочту решение, которое не потребует изменений в коде NodeJS, а только в скрипте Python).