PHP-javaScript-AES 对称加密

基于 Crypto.js 之 javaScript 加密,PHP解密。 (应用于登录注册)。前端后台数据交互需要进行加密之后传输使用,以保证系统数据的安全。

javaScript

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script src="../node_modules/_crypto-js@3.1.9-1@crypto-js/crypto-js.js"></script>
<script type="text/javascript">
var password = '123456';
var aes_password = encrypt(password);
// aes_password 加密后的数据

function encrypt(text){
var key = CryptoJS.enc.Latin1.parse('AQSWDEFRGT@#$%^&'); //为了避免补位,直接用16位的秘钥
var iv = CryptoJS.enc.Latin1.parse('AQSWDE@#$%^&FRGT'); //16位初始向量
var encrypted = CryptoJS.AES.encrypt(text, key, {
iv: iv,
mode:CryptoJS.mode.CBC,
padding:CryptoJS.pad.ZeroPadding
});
return encrypted.toString();
}
</script>

PHP

1
2
3
$key = "AQSWDEFRGT@#$%^&";
$iv = "AQSWDE@#$%^&FRGT";
$password = openssl_decrypt($password, 'aes-128-cbc', $key, OPENSSL_ZERO_PADDING , $iv);

如果想做安全一点就是前端和后台是用同一个算法来生成key,使其不是唯一。然后不停的交换秘钥,这种情况下用户只有分析js秘钥生成算法和密文信息才有可能解密出来。

Crypto.js