一、AES介绍
AES是一种对称加密算法。主要有以下几个参数。
1. key (密钥)
AES-128,AES-192,AES-256
AES128对应的密钥长度是128位,也就是16个字节。
2. iv(偏移量)
3. mode(加密模式)
1、电码本模式(Electronic Codebook(ECB));
2、密码分组链接模式(Cipher Block Chaining(CBC));
3、计算器模式(Counter(CTR));
4、密码反馈模式(Cipher FeedBack(CFB));
5、输出反馈模式(Output FeedBack(OFB));
4. padding (填充方式)
PKCS5, PKCS7, NOPADDING
PKCS5Padding和PKCS7Padding基本是一个东西,可以通用
二、CryptoJS
1.crypto-js(GitHub)是谷歌开发的一个纯JavaScript的加密算法类库。
2.目前crypto-js已支持的算法有:
MD5,SHA-1,SHA-256,AES,Rabbit,MARC4,HMAC,HMAC-MD5,HMAC-SHA1,HMAC-SHA256,PBKDF2.
3.使用方式:
1.直接引用:引入crypto-js文件。
2.安装依赖:
①npm install crypto-js
②import CryptoJS from 'crypto-js'。
4.默认使用AES-256,CBC,PKCS7Padding(没有PKCS5Padding)。
三、在JS中使用示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>aesTest-JS</title>
</head>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/aes.min.js"></script>
<!-- <script type="tewt/javascript" src="lib/crypto-js.min.js"></script> -->
<!-- <script type="text/javascript" src="lib/aes.min.js"></script> -->
<body>
<script>
var plaintText = 'test';
var key = CryptoJS.enc.Utf8.parse("1234567891234567");
var iv = CryptoJS.enc.Utf8.parse("test");
var encryptedData = CryptoJS.AES.encrypt(plaintText, key, {
iv:iv,
mode: CryptoJS.mode.CBC,
padding