PHP openssl_encrypt и NodeJS-шифр не имеют одинакового вывода - PullRequest
0 голосов
/ 04 марта 2019

Ниже представлены две версии кодов, которые шифруют текстовую строку.Один использует Node JS, другой использует PHP.Я не уверен, почему вывод отличается, где я ожидаю, что вывод должен быть одинаковым.

Nodejs v11.9.0

const crypto = require('crypto');
const secret_data = 'httpswwwcom';
const CIPHER_METHOD = 'aes-256-ctr';
const key = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA';
const iv = 'BBBBBBBBBBBBBBBB';
const cipher = crypto.createCipheriv(CIPHER_METHOD, key, iv);
const encrypted = cipher.update(secret_data , 'ascii', 'ascii') + cipher.final('ascii');
console.log(Buffer.from(encrypted).toString('base64'));

PHP 7.3.2

const secret_data = 'httpswwwcom';
const CIPHER_METHOD = 'aes-256-ctr';
const key = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA';
const iv = 'BBBBBBBBBBBBBBBB';
$encrypt= openssl_encrypt(
    secret_data ,
    CIPHER_METHOD,
    key,
    OPENSSL_RAW_DATA,
    iv
);
echo base64_encode($encrypt);

Вывод Nodejs: Jx0UQhAEJSQ8Cwo=

Вывод PHP: p50UwhAEJSS8C4o=

Я попытался обновить кодировки (например, с Ascii на latin1, или utf8, или двоичный файл), но яне может сделать мой вывод NodeJS то же самое с PHP.

Что мне нужно сделать или изменить мои коды NodeJS, чтобы они соответствовали выводу из PHP?

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