前端
<script src="https://cdn.jsdelivr.net/npm/crypto-js@4.0.0/crypto-js.js"></script>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script>
// 1.加密
// @param data {加密的数据}
// @param key {加密的key 16位}
function encrypt(data) {
return CryptoJS.AES.encrypt(data, CryptoJS.enc.Utf8.parse('rhhlrhhlrhhlrhhl'), {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
}).toString();
}
// 2.解密
// @param data {解密的数据}
// @param key {解密的key 16位}
function decrypt(data) {
return CryptoJS.AES.decrypt(
data,
CryptoJS.enc.Utf8.parse('rhhlrhhlrhhlrhhl'),
{
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
}).toString(CryptoJS.enc.Utf8);
}
// 3.调用函数
var arr = {firstName: "Bill", lastName: "Gates", age: 19};
// 数组转Json
var arrjson = JSON.stringify(arr);
// console.log(arrjson)
// 加密
var dataencrypt = encrypt(arrjson);
// console.log(dataencrypt )
// 解密
var datadecrypt = decrypt(dataencrypt )
// console.log(datadecrypt )
// Json转数组
jsonarr = JSON.parse(datadecrypt )
// console.log(jsonarr)
$.ajax({
// 请求资源路径
url: "/api/phpssl/test",
// 请求参数
data: {"data": dataencrypt },
// 请求方式
type: "POST",
// 请求成功后调用的回调函数
success: function (data) {
console.log(data);
},
// 请求失败后调用的回调函数
error: function () {
console.log("操作失败");
}
});
</script>
后端
public function test()
{
$this->success('返回成功', json_decode(openssl_decrypt($_POST['data'],'aes-128-ecb','rhhlrhhlrhhlrhhl')));
}