1. Home
  2. Docs
  3. node.js
  4. 加密解密

加密解密

加密解密字符

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";

aes-256-cbc 加解密

NodeJS加解密之Crypto

Was this article helpful to you? Yes No

How can we help?