简体   繁体   中英

Decode a string in Node.js which was encoded in Python

I have a requirement where I am encoding a string in Python using a secret key. Then I need to decode it in Node.js. I am new to Node.js, so not sure how to do that.

Here's Python side:

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')

In my Node.js script, I have access to the encoded string and secret key. And I need to retrieve the original string.

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

Note that I own both Python and Node.js script, so if needed, I can change the python script to use a different encoding mechanism.

Running your Python code, I've got:

KRUcAAZDNhsbAwo=

To decode this in JavaScript, without 3rd party libraries:

// 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'

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM