douxie5176 2019-03-04 14:19
浏览 187

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

Below are two versions of codes that encrypt a text string. One is using Node JS, the other is using PHP. I am not sure why the output is different, where I expect the output should be the same.

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 output is: Jx0UQhAEJSQ8Cwo=

PHP output is: p50UwhAEJSS8C4o=

I have tried updating the encodings (e.g. from Ascii to latin1, or utf8, or binary), but I couldn't make my NodeJS output the same with PHP.

What do I need to do or modify my NodeJS codes to match the output from PHP?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥30 seata使用出现报错,其他服务找不到seata
    • ¥15 怎么实现输入一个要删除的数后删除后显示剩余数再输入再删除显示剩余数(语言-c语言)
    • ¥35 引用csv数据文件(4列1800行),通过高斯-赛德尔法拟合曲线,在选取(每五十点取1点)数据,求该数据点的曲率中心。
    • ¥20 程序只发送0X01,串口助手显示不正确,配置看了没有问题115200-8-1-no,如何解决?
    • ¥15 Google speech command 数据集获取
    • ¥15 vue3+element-plus页面崩溃
    • ¥15 像这种代码要怎么跑起来?
    • ¥15 安卓C读取/dev/fastpipe屏幕像素数据
    • ¥15 pyqt5tools安装失败
    • ¥15 mmdetection