PHP openssl_encrypt和NodeJS密码不具有相同的输出

时间:2019-03-04 14:19:38

标签: php node.js encryption openssl

下面是加密文本字符串的两种版本的代码。一种是使用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的输出?

0 个答案:

没有答案