一、前言
公司安全部门要求所有涉及登录信息的个人信息需要进行前端加密传输到后台处理,在网上到处寻找解决方案都失败告终,最后同事花了一天的时间来不断试错来研究前后台解密不一致问题。
二、前端实现
crypto-js 需要的可以去下载
const CryptoJS = require('crypto-js'); //引用AES源码js
const key = CryptoJS.enc.Utf8.parse("ysh425ptjhcpo781"); //十六位十六进制数作为密钥偏移量
const iv = CryptoJS.enc.Utf8.parse('53c5a64c6be84e97'); //十六位十六进制数作为密钥偏移量
//加密
function encrypt(text) {
return CryptoJS.AES.encrypt(text, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}).toString();
}
//解密
function decrypt(text) {
var result = CryptoJS.AES.decrypt(text, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return result.toString(CryptoJS.enc.Utf8)
}
三、PHP实现
public function testAES()
{
$data = "123";
$key = "ysh425ptjhcpo781";
$iv = "53c5a64c6be84e97";
$str = base64_encode(openssl_encrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA , $iv));
print_r($str);
}
四、总结
使用的代码就这么多是不是很简单,大家想更深入的了解AES加解密原理可以点击查看,谢谢大家的支持!