前端用crypto-js来进行加密,php使用openssl_decrypt来进行解密
crypto-js链接:
https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js
https://cdn.jsdelivr.net/npm/crypto-js@4.0.0/crypto-js.js
前端加密解决:
<script src="cdn.jsdelivr.net_npm_crypto-js@4.0.0_crypto-js.js"></script>
<script>
// 1.加密
// @param data {加密的数据}
// @param key {加密的key 16位}
function encrypt(data,key,iv) {
return CryptoJS.AES.encrypt(data, key, {
mode: CryptoJS.mode.CBC,
iv: iv,
padding: CryptoJS.pad.Pkcs7
}).toString();
}
// 2.解密
// @param data {解密的数据}
// @param key {解密的key 16位}
function decrypt(data,key,iv) {
return CryptoJS.AES.decrypt(data, key, {
mode: CryptoJS.mode.CBC,
iv: iv,
padding: CryptoJS.pad.Pkcs7
}).toString(CryptoJS.enc.Utf8);
}
// 3.调用函数
//需要加密的数据
var arr = {name: "张三", sex: "男", age: 19}
// 数组转Json
var arrjson = JSON.stringify(arr);
// 我采用的是16位的key,为了方便我前端就把key转成UTF8
let key1 = CryptoJS.enc.Utf8.parse('GftZqNEoBVdB2kwx');
// iv采用的是16位的,同样为了方便转成UTF8
let iv1 = CryptoJS.enc.Utf8.parse('3zyJFPEzh5rUeUNi');
// 加密
var dataencrypt = encrypt(arrjson,key1,iv1);
console.log(dataencrypt)
// 需要解密的数据
let encryptDatas = 'bqGZPuD0tzIzBGHYfw5YA9xLpafs3g2dom1RsRnYQ2TlSH/6AiQI40yN86pAASqf';
// 我采用的是16位的key,为了方便我前端就把key转成UTF8
let key2 = CryptoJS.enc.Utf8.parse('GftZqNEoBVdB2kwx');
// iv采用的是16位的,同样为了方便转成UTF8
let iv2 = CryptoJS.enc.Utf8.parse('3zyJFPEzh5rUeUNi');
// 解密
datadecrypt = decrypt(encryptDatas,key2,iv2);
console.log(datadecrypt);
// console.log(JSON.parse(datadecrypt));
</script>
PHP加密解密:
<?php
//解密
function aesDecrypt($data) {
// 密钥key要和前端一致,由于前端转成了UTF8的格式,这边就可以直接使用了
$cryptKey = 'GftZqNEoBVdB2kwx';
// iv也是一样要和前端一致
$iv = '3zyJFPEzh5rUeUNi';
// 然后使用openssl_decrypt来进行解密
$decrypt = openssl_decrypt($data, 'AES-128-CBC', $cryptKey, 0, $iv);
echo $decrypt;
}
aesDecrypt('twaQpH9sPCN1Wc+UdGymnrZg+PNybLmNsaJhAX6+VM+Wpsp11n+m5pNr5aMLtL1d');
//加密
function aesEncrypt($data) {
$cryptKey = 'GftZqNEoBVdB2kwx';
$iv = '3zyJFPEzh5rUeUNi';
$encrypt = openssl_encrypt($data, 'AES-128-CBC', $cryptKey, 0, $iv);
echo $encrypt;
}
aesEncrypt(json_encode(['name'=>'小明','sex'=>'男', 'age' => 19]));
博客介绍了前端使用crypto-js进行加密,PHP使用openssl_decrypt进行解密的方法,并给出了crypto-js的链接。主要围绕前端加密和PHP解密的技术实现展开,属于信息技术领域。
4270





