Декодировать строку в Node.js, которая была закодирована в Python - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть требование, когда я кодирую строку в Python, используя секретный ключ. Затем мне нужно расшифровать его в Node.js. Я новичок в Node.js, поэтому не уверен, как это сделать.

Вот сторона Python:

from Crypto.Cipher import XOR
def encrypt(key, plaintext):
    cipher = XOR.new(key)
    return base64.b64encode(cipher.encrypt(plaintext))

encoded = encrypt('application secret', 'Hello World')

В моем скрипте Node.js у меня есть доступ к закодированному строка и секретный ключ. И мне нужно получить исходную строку.

const decoded = someLibrary.someMethod('application secret', encoded)
// decoded = 'Hello World'

Обратите внимание, что у меня есть оба скрипта Python и Node.js, поэтому при необходимости я могу изменить скрипт python для использования другого механизма кодирования .

1 Ответ

2 голосов
/ 05 апреля 2020

Запустив ваш код Python, я получил:

KRUcAAZDNhsbAwo=

Чтобы декодировать это в JavaScript, без сторонних библиотек:

// The atob function (to decode base64) is not available in node, 
// so we need this polyfill.
const atob = base64 => Buffer.from(base64, 'base64').toString();

const key = 'application secret';
const encoded = 'KRUcAAZDNhsbAwo=';

const decoded = atob(encoded)
  .split('')
  .map((char, index) =>
    String.fromCharCode(char.charCodeAt(0) ^ key.charCodeAt(index % key.length))
  )
  .join('');

// decoded = 'Hello World'
...