php与CryptoJS之间的AES加解密

2021-08-07

js代码

下载crypto-js.jsbase64.min.js

// 加密
function encrypt(word, keyStr) {
    keyStr = keyStr ? keyStr : '5aacb37ee291a858c3fbb83f0dfaeeea';
    var key = CryptoJS.enc.Utf8.parse(keyStr);
    var srcs = CryptoJS.enc.Utf8.parse(word);
    var encrypted = CryptoJS.AES.encrypt(srcs, key, {
        iv: CryptoJS.enc.Utf8.parse("b54e272198cb4011"),
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.ZeroPadding 

    });
    return encrypted.toString()
}

// 解密
function decrypt(word, keyStr) {
    keyStr = keyStr ? keyStr : '5aacb37ee291a858c3fbb83f0dfaeeea';
    var key = CryptoJS.enc.Utf8.parse(keyStr);
    var decrypt = CryptoJS.AES.decrypt(word, key, {
        iv: CryptoJS.enc.Utf8.parse("b54e272198cb4011"),
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.ZeroPadding 
    });
    return CryptoJS.enc.Utf8.stringify(decrypt).toString()
}

let name = Base64.encode(encrypt('name'))

php代码

$aes = [
    'key' => '5aacb37ee291a858c3fbb83f0dfaeeea',
    'iv' => 'b54e272198cb4011',
    'mode' => 'AES-256-CBC',
];

$login_name = trim(openssl_decrypt(base64_decode($para['name']), $aes['mode'], $aes['key'], OPENSSL_ZERO_PADDING, $aes['iv']));

# 使用trim去除解密后字符串中的乱码

 

{/if}