*注意需要自行测试相同数据加密,前端加密后打印值和后端加密后打印值是否相同,并且前后端env文件配置相同秘钥,如能加密,需要查看解密后的值是否相同,不相同前端查看是否转Utf8
PHP后端代码公共方法
/**
* 加密
* @access public
* @return string
*/
function encrypt_data($data = '', $app_key = 'APP_AES_KEY', $app_iv = 'APP_AES_IV', $method = "AES-128-CBC", $options = OPENSSL_RAW_DATA) {
if (empty($data)) {
return '';
}
$app_key = env($app_key);// env配置16位字符串可以写死一样的
$app_iv = env($app_iv);// env配置16位字符串可以写死一样的
$encryptString = base64_encode(openssl_encrypt($data, $method, $app_key, $options, $app_iv));
return $encryptString;
}
/**
* 解密
* @access public
* @return string
*/
function decrypt_data($data = '', $app_key = 'APP_AES_KEY', $app_iv = 'APP_AES_IV', $method = "AES-128-CBC", $options = OPENSSL_RAW_DATA) {
if (empty($data)) {
return '';
}
$app_key = env($app_key);// env配置16位字符串可以写死一样的
$app_iv = env($app_iv);// env配置16位字符串可以写死一样的
$decryptString = openssl_decrypt(base64_decode($data), $method, $app_key, $options, $app_iv);
return $decryptString;
}
VUE前端代码公共方法
export function encryptData (word) {
var app_key = process.env.VUE_APP_AES_KEY// env配置16位字符串可以写死一样的
var app_iv = process.env.VUE_APP_AES_IV// env配置16位字符串可以写死一样的
var key = cryptoJs.enc.Utf8.parse(app_key)
var iv = cryptoJs.enc.Utf8.parse(app_iv)
var srcs = cryptoJs.enc.Utf8.parse(word)
var encrypted = cryptoJs.AES.encrypt(srcs, key, {
iv: iv,
mode: cryptoJs.mode.CBC,
padding: cryptoJs.pad.Pkcs7
})
return encrypted.toString()
// return cryptoJs.enc.Base64.stringify(cryptoJs.enc.Utf8.parse(encrypted)).toString()
}
export function decryptData (data) {
var app_key = process.env.VUE_APP_AES_KEY// env配置16位字符串可以写死一样的
var app_iv = process.env.VUE_APP_AES_IV// env配置16位字符串可以写死一样的
var key = cryptoJs.enc.Utf8.parse(app_key)
var iv = cryptoJs.enc.Utf8.parse(app_iv)
var decrypt = cryptoJs.AES.decrypt(data, key, {
iv: iv,
mode: cryptoJs.mode.CBC,
padding: cryptoJs.pad.Pkcs7
})
return decrypt.toString(cryptoJs.enc.Utf8)
// return cryptoJs.enc.Utf8.stringify(decrypt).toString()
}