PHP openssl_decrypt 加密解密,js的CryptoJS数据加密解密

一、php方面
1.需要开启openssl扩展

2.注:php 的 mcrypt_ 函数簇在 7.1.0 版本中开始 deprecated,并在 7.2.0 版本中彻底废弃。其实在 2015 就已经开始建议大家使用 openssl_encrypt/openssl_decrypt 来代替 mcrypt_encrypt/mcrypt_decrypt,缓冲了 N 久,这一天终于在 7.2.0 版本上到来了。

openssl_decrypt 的 OPENSSL_ZERO_PADDING默认会补零到16位

aes-128-cbc: 表示16位的

method 长度的问题,密码学方式我们用的最多的有两种,AES-128-CBC 与 AES-256-CBC

字符串的长度问题
1 bit 位 = 1 二进制数据
1 byte 字节 = 8 bit
1 字母 = 1 byte = 8 bit

128位/8=16字节=16字符
192位/8=24字节=24字符
256位/8=32字节=32字符

也就是说KEY 的长度是根据AES-128-CBC 与 AES-256-CBC 变换的。使用 AES-128-CBC 时,key的长度应该为16位,使用 AES-256-CBC时,key的长度应该为32位。

<?php
// 需要加密的字符串
$plaintext = "hello";

// 加密密钥(必须是16、24或32个字符长,对应AES-128、AES-192、AES-256)
$key = "examplekey123456"; // 请确保密钥的安全性

// 初始化向量(IV),必须是16个字符长
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-128-cbc'));

// 加密字符串
$encrypted = openssl_encrypt($plaintext, 'aes-128-cbc', $key, 0, $iv);

// 如果需要,可以将IV和密文一起存储或传输(通常使用base64编码以便于存储和传输)
$encrypted_with_iv = base64_encode($iv.$encrypted);

echo "加密后的字符串(包含IV): " . $encrypted_with_iv . "";

// 将加密字符串(包含IV)解码为原始二进制数据
$decoded = base64_decode($encrypted_with_iv);

// 提取IV(前16个字符)和密文(剩余部分)
$iv = substr($decoded, 0, 16);
$encrypted = substr($decoded, 16);

// 解密字符串
$decrypted = openssl_decrypt($encrypted, 'aes-128-cbc', $key, 0, $iv);

echo "解密后的字符串: " . $decrypted;

?>

二、js方面
cryptojs:下载地址
https://code.google.com/archive/p/crypto-js/downloads
cryptojs:文档说明
CryptoJS - CryptoJS

cryptojs:在线调试工具
在线加密解密

<!--    加密js-->
<script src="__STATIC__/common/js/crypto/rollups/aes.js"></script>
<script src="__STATIC__/common/js/crypto/components/pad-zeropadding.js"></script>

/**
 * 加密
 */
function doEncrypt(data) {

    if (data == '' || data == undefined) {
        return data;
    }

    let key = CryptoJS.enc.Latin1.parse('F79JF2tNdHLW4bid');
    let iv = CryptoJS.enc.Latin1.parse('bk4h1mv84RCOdyn2');
    //加密
    return CryptoJS.AES.encrypt(data, key, {iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.ZeroPadding});
}

转自:https://blog.csdn.net/qq_25275355/article/details/116918996