最近开发[考勤系统]时,需要写一个加密解密方法,首先就想到了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);
}
相互加密解密后,后台直接返回加密后的代码,前端解密显示,如下图: