Как использовать OpenSSL на node js? - PullRequest
0 голосов
/ 10 февраля 2020

Я использую веточку js шаблон для node js 13.6.0 с express 3.

Я пытаюсь преобразовать свой php веб-сайт в node js. В php я использовал OpenSSL для шифрования / дешифрования информации о пользователях, и теперь я хочу сделать то же самое, но в node js.

Php function

$secure_key= "Wzm7phmY8SwjtInXk1nY";//
$cipher = "AES-128-ECB";

function encrypt($pure_string, $encryption_key) {
    global $cipher;
    $encrypted_string = openssl_encrypt($pure_string, $cipher, $encryption_key);
    return $encrypted_string;
}

function decrypt($encrypted_string, $encryption_key) {
    global $cipher;
    $decrypted_string = openssl_decrypt($encrypted_string, $cipher, $encryption_key);
    return $decrypted_string;

}

Я хотел бы сделать точно такую ​​же функцию, но для node.js

Пожалуйста, ответьте, если у вас есть идеи

1 Ответ

0 голосов
/ 10 февраля 2020

Вы можете использовать пакет crypto npm. Я предполагаю, что это шифрование / дешифрование с солью. Так что это должно работать.

function decrypt(password, saltHex, ivAndCipherTextHex) {
  const pass = Buffer.from(password, 'ascii');
  const salt = Buffer.from(saltHex, 'hex');
  const key = crypto.pbkdf2Sync(pass, salt, 1024, 32, 'sha1');
  const cipher = Buffer.from(ivAndCipherTextHex, 'hex');
  const iv = cipher.slice(0, 16);
  const cipherText = cipher.slice(16, cipher.length);
  const decipher = crypto.createDecipheriv('aes-256-cbc', key, iv);
  try {
    return Buffer.concat([
      decipher.update(cipherText),
      decipher.final(),
    ]).toString('utf8');
  } catch (err) {
    throw new Error(`Error during decrypt: ${err}`);
  }
}

Вот как вызывать эту функцию расшифровки.

расшифровать ($ secure_key, $ salt, $ cipher);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...