AES加密问题 nodejs加密php解密,某些数据,解密为空

我用nodejs加密数据向PHP后台发送数据。nodejs模拟了几组数据加密。
奇怪的是,5组数据,有三组是解密成功,2组是解密失败。
但是,如果我把数据的缩小一些,又都可以解密成功。解密失败的时候 ,返回是空。
下面是nodejs加密函数

'use strict';
const crypto = require('crypto');
const config = require('config');

/**
 * AES_128_CBC 加密
 * 128位
 * return base64
 */
function encryption(data) {
    let key = AES_conf.key;
    let iv = AES_conf.iv;

    var cipherChunks = [];
    var cipher = crypto.createCipheriv('aes-128-cbc', key, iv);
    cipher.setAutoPadding(true);
    cipherChunks.push(cipher.update(data, 'utf8', 'base64'));
    cipherChunks.push(cipher.final('base64'));
    return cipherChunks.join('');
}

下面是PHP的解密函数

<?php

namespace App\Http\Controllers\Service;

class AesEncryptService
{
    const AES_IV  = "1072132852963992"; //16位
    // 解密
    public static function aes_decrypt($str)
    {
        $key = self::getKey();
        $decrypted = openssl_decrypt(base64_decode($str), 'aes-128-cbc', $key, OPENSSL_RAW_DATA, self::AES_IV);
        add_log($decrypted);
        return $decrypted;
    }

下面是解析的结果。

[2020-04-01 18:32:10] INFO: {"id":4,"ip":"sqlite.windows.com","db_order":1,"start":1580486400,"end":1582905599}
[2020-04-01 18:32:10] INFO: 
[2020-04-01 18:32:10] INFO: {"id":1,"ip":"sqlite.windows.com","db_order":1,"start":1580486400,"end":1582905599}
[2020-04-01 18:32:10] INFO: {"id":4,"ip":"sqlite.windows.com","db_order":1,"start":1580486400,"end":1582905599}
[2020-04-01 18:32:10] INFO: 

其中,第2组和第4组是,解析不出来的。

如果,我把其中的start和end字段都删除,重新解析的话,又都可以了。

我觉得,应该是nodejs和PHP的规则不一样的问题。我在网上找了好久,也没有相关的介绍。你们能给点建议吗?

阅读 1.8k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题