首页 > 解决方案 > 加密 des-ede3-cbc nodejs

问题描述

我正在尝试使用 des-ede3-cbc 算法加密字符串

我的 base64 密码是sq7HjrUOBfKmC576ILgskD5srU870gJ7,我要加密的消息是06080232580我应该得到的十六进制结果是a5334014a4f010c8779cef789886c123

第一次尝试

const iv = Buffer.alloc(8);
const cipher = crypto.createCipheriv('des-ede3-cbc', Buffer.from('sq7HjrUOBfKmC576ILgskD5srU870gJ7', 'base64'), iv);
let ciph = cipher.update('06080232580', 'utf8', 'hex');
ciph += cipher.final('hex');
console.log(ciph);

结果是a5334014a4f010c8300101ae242354de

另一个测试

let shortkey = Buffer.from('06080232580', 'utf8');
let key = Buffer.alloc(24);
key.fill('\0');
for (i = 0; i < shortkey.length; i++) {
    key[i] = shortkey[i];
}
let IV = Buffer.alloc(8);
const cipher = crypto.createCipheriv('des-ede3-cbc', key, IV);
password = Buffer.from('sq7HjrUOBfKmC576ILgskD5srU870gJ7', 'base64');

let encryptedArr = [cipher.update(password)];
encryptedArr.push(cipher.final());
encrypted = Buffer.concat(encryptedArr);
console.log(encrypted.toString('hex'));

结果是6f6b59b6c3ea45592bedbd86db4f31cc5da23d85e2ff773940aaa39e2efdc4ae

Y 有我的旧代码在 php 中工作

<?php
$message = "06080232580";
$key = base64_decode("sq7HjrUOBfKmC576ILgskD5srU870gJ7");
$l = ceil(strlen($message) / 8) * 8;
$message = $message.str_repeat("\0", $l - strlen($message));
$result = substr(openssl_encrypt($message, 'des-ede3-cbc', $key, OPENSSL_RAW_DATA, "\0\0\0\0\0\0\0\0"), 0, $l);
echo implode(unpack("H*", $result));

结果标识a5334014a4f010c8779cef789886c123

标签: node.jsencryption

解决方案


找到了解决方案

    let shortkey = Buffer.from('06080232580', 'utf8');
    let key = Buffer.alloc(16);
    key.fill('\0');
    for (i = 0; i < shortkey.length; i++) {
        key[i] = shortkey[i];
    }
    let IV = Buffer.alloc(8);
    const password = Buffer.from('sq7HjrUOBfKmC576ILgskD5srU870gJ7', 'base64');
    const cipher = crypto.createCipheriv('des-ede3-cbc', password, IV);
    cipher.setAutoPadding(false)
    let encryptedArr = [cipher.update(key)];
    encryptedArr.push(cipher.final());
    encrypted = Buffer.concat(encryptedArr);
    console.log(encrypted.toString('hex'));

推荐阅读