aes-256-cbc 加解密

nodejs

const crypto = require('crypto');

function encrypt(str, key){
    if (typeof str == 'object') {
        str = JSON.stringify(str);
    }
    try {
        const cipher = crypto.createCipheriv('aes-256-cbc', key, key.substring(0, 16));
        cipher.setAutoPadding(true);
        return cipher.update(String(str), 'utf8', 'hex') + cipher.final('hex');
    } catch(e) {
        return '';
    }
}

function decrypt (str, key) {
    try {
        const decipher = crypto.createDecipheriv('aes-256-cbc', key, key.substring(0, 16));
        decipher.setAutoPadding(true);
        return decipher.update(String(str), 'hex', 'utf8') + decipher.final('utf8');
    } catch(e) {
        return '';
    }
}

var key = '12345678901234567890123456789012';
var str = encrypt('1234567890abcdefghigklmnopqrstuvwxyz!@#$%^&*(){}:"<>?|', key);
console.log(str);

str = decrypt(str, key);
console.log(str);

php

<?php

function encrypt($str, $key) {
    $iv = substr($key, 0, 16);
    $data = openssl_encrypt($str, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv);
    return bin2hex($data);
}

function decrypt($str, $key) {
    $iv = substr($key, 0, 16);
    return openssl_decrypt(hex2bin($str), 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv);
}

$key = '12345678901234567890123456789012';
$str = encrypt('1234567890abcdefghigklmnopqrstuvwxyz!@#$%^&*(){}:"<>?|', $key);
echo "$str\r\n";

$str = decrypt($str, $key);
echo "$str\r\n";

 

转载于:https://my.oschina.net/qiongtaoli/blog/1608375

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值