加密和解密双方约定一个是密钥key,一个是偏移量iv (都是16位),决定使用对称加密算法AES去解决。
加密时使用:ENCRYPT_MODE,解密时使用:DECRYPT_MODE,以加密为例,在AES函数内部进行以下操作:
例如 P = D(K, C),其中C为密文,K为密钥,P为明文。
1.第一步,把明文C和密钥K作为解密函数的参数输入。
2.第二步,经过AES算法的字节替代方法(通过S盒完成一个字节到另外一个字节的映射),将原来的字符替换成别的无任何意义的字符。
3.第三步,通过约定的偏移量,进行替换后的字符矩阵的行位移,进一步打乱字符。
4.第四步,将第三步得到的字符串进行列混淆(列混合变换是通过矩阵相乘来实现的,经行移位后的状态矩阵与固定的矩阵相乘,得到混淆后的状态矩阵),从而进一步打乱字符。
5.第五步,将第四步得到的字符根据密钥进行加密操作,返回加密后的字节数组,然后进行Base64编码
解密的过程则是从后往前一步一步还原字符
其中密钥为接收方与发送方协商产生并写入前后端代码中,不会直接在网络上传输,所以不会导致传输中密钥泄漏,是很安全的加密方式。
1.页面引入js
<script type="text/javascript" src="js/crypto-js.js"></script>
2.加密函数
var key= '' ;
var iv= '' ;
var test= '' ;
//test是明文
en