Python-эквивалент алгоритма NodeJS AES 256 CTR - PullRequest
0 голосов
/ 09 ноября 2018

Я шифровал сообщения с помощью модуля nodejs следующим образом:

 var crypto = require('crypto'),
    algorithm = 'aes-256-ctr',
    password = 'd6F3Efeq';

function encrypt(text){
  var cipher = crypto.createCipher(algorithm,password)
  var crypted = cipher.update(text,'utf8','hex')
  crypted += cipher.final('hex');
  return crypted;
}

(отсюда: https://lollyrock.com/articles/nodejs-encryption/)

Однако, используя тот же секрет, тот же алгоритм и тот же режим, я не могу расшифровать это с помощью криптографии в Python.

Вот одна из вещей, которые я пробовал:

crypto = AES.new(password, AES.MODE_CTR)
print(crypto.decrypt(message.decode("hex")))

Возвращает двоичные данные. Кодирование в UTF-8 не выполняется, и что самое интересное: Похоже, AWS.new каждый раз генерирует случайный iv, и результат расшифровки для каждого прогона разный!

.. Теперь библиотека nodeJS не возвращает Nonce, поэтому я не знаю, что еще можно взять с собой из функции NodeJS, кроме зашифрованного текста и пароля (секретного) - есть идеи?

...