Ниже представлены две версии кодов, которые шифруют текстовую строку.Один использует 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?