PHP端
/**
*
*$data 要加解密的字元串
*$operation 傳參為true的時候表示解密,否則為加密
*$code 為加解密的加秘鑰(自己定義與vue保持一緻)
*/
function secret($data,$code, $operation = false)
{
if ($operation){
//解密
if (empty($data)) return false;
$data = openssl_decrypt(base64_decode($data), 'AES-128-ECB', $code, OPENSSL_RAW_DATA);
$data = json_decode($data, true);
return $data;
}else{
//加密
if (is_array($data)) { //如果傳過來的是數組,轉為json格式
$data = json_encode($data);
}
$data = base64_encode(@openssl_encrypt($data, 'AES-128-ECB', $code, OPENSSL_RAW_DATA));
return $data;
}
}
VUE寫法
import CryptoJS from 'crypto-js' //引入安裝
export default {
// 加密函數 string要加解密的字元串 code加解密的秘鑰字元串(自己定義保持與PHP端一緻) operation為true的時候代表解密
secret(string, code ,operation) {
var key = CryptoJS.enc.Utf8.parse(code);
if (operation){
// 解密
let res = CryptoJS.AES.decrypt(string, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }).toString(CryptoJS.enc.Utf8);
return JSON.parse(res);
}else{
string = JSON.stringify(string);
// 加密
return CryptoJS.AES.encrypt(string,key, { mode:CryptoJS.mode.ECB, padding:CryptoJS.pad.Pkcs7 }).toString();
}
}
}