最近开发[考勤系统]时,需要写一个加密解密方法,首先就想到了CryptoJS,里面自带AES加密和解密各种模式,如CBC等,我们后端代码使用的是PHP,需要前后端能互相加密和解密,代码如下:

// AES加密
// Author: 考勤系统www.daytime.cc
function aesEncrypt(str) {
	var KEY = 'ABCDEFG123456';
	var IV = CryptoJS.MD5(KEY).toString();
	var encrypted = CryptoJS.AES.encrypt(str, CryptoJS.enc.Utf8.parse(KEY.substring(0,16)), {
		iv: CryptoJS.enc.Utf8.parse(IV.substring(0,32)),
		mode: CryptoJS.mode.CBC
	});
	return s;
}
// AES解密  与前端JS加密配合使用
// Author: 考勤系统www.daytime.cc
function aesDecrypt($string, $mode = 'AES-128-CBC', $len = 32){
	if(!$string)return '';
	$key = substr('ABCDEFG123456', 0, $len);
	$iv = substr(md5('ABCDEFG123456'), 0, $len);
	$data = openssl_decrypt($string, $mode, $key, 0, $iv);
	return trim($data);
}

相互加密解密后,后台直接返回加密后的代码,前端解密显示,如下图: 微信图片_20230209104007.png