<script src="<%=request.getContextPath()%>/js/cryptojs/crypto-js.js"></script>
<script>
var message = "1_2_3_4_5_6_7_8_9_0";
var iv = CryptoJS.lib.WordArray.random(128 / 8).toString(CryptoJS.enc.Hex);
var key = "0321ebeba1f75de2d3cd3471af7418a4";
var cryptkey = CryptoJS.enc.Hex.parse(key);
var ciphertext = aesEncrypt(message,cryptkey,iv);
var decryptedMessage = aesDecrypt(ciphertext,cryptkey,iv);
alert(decryptedMessage);
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
<script
>
function aesEncrypt(message,key,iv){
var ciphertext = CryptoJS.AES.encrypt(message, key, {
iv: CryptoJS.enc.Hex.parse(iv),
mode: CryptoJS.mode.CBC,
padding:CryptoJS.pad.Pkcs7
return ciphertext;
function aesDecrypt(ciphertext,key,iv){
var decrypted = CryptoJS.AES.decrypt(ciphertext,key,{
iv: CryptoJS.enc.Hex.parse(iv),
mode: CryptoJS.mode.CBC,
padding:CryptoJS.pad.Pkcs7
return decrypted.toString(CryptoJS.enc.Utf8);
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
AES加密函数 返回值为 加密对象ciphertext,其属性:
* ciphertext: ciphertextWordArray,
* key: keyWordArray,
* iv: ivWordArray,
* algorithm: CryptoJS.algo.AES,
* mode: CryptoJS.mode.CBC,
* padding: CryptoJS.pad.PKCS7,
* blockSize: 4,
* formatter: CryptoJS.format.OpenSSL
属性ciphertext即 密文,可以发现,其为WordArray类型。通过 加密对象.属性名 取值。
function aesEncrypt(message,key,iv){
var ciphertext = CryptoJS.AES.encrypt(message, key, {
iv: CryptoJS.enc.Hex.parse(iv),
mode: CryptoJS.mode.CBC,
padding:CryptoJS.pad.Pkcs7
return CryptoJS.enc.Base64.stringify(ciphertext.ciphertext)
//解密函数 稍有改动。
function aesDecrypt(crypted,key,iv){
var decrypted = CryptoJS.AES.decrypt({ciphertext: CryptoJS.enc.Base64.parse(crypted)},key,{
iv: CryptoJS.enc.Hex.parse(iv),
mode: CryptoJS.mode.CBC,
padding:CryptoJS.pad.Pkcs7
return decrypted.toString(CryptoJS.enc.Utf8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
很多都是自己的理解,希望不会有大的偏差。最近这个项目,遇到了AES加密,才有所了解。真是路漫漫其修远兮啊。。。
1.CryptoJS脚本下载下载地址:http://pan.baidu.com/s/1slwHVLb2.WordArray (An array of 32-bit words.)使用AES加密前,先了解下WordArray,我把它理解成CryptoJS中定义的 新的 数据类型,叫“单词数组”。2.1 : 初始化var wordArray = Cryp
<!-- <%@ page language="java" pageEncoding="UTF-8"%>
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path;
request.getSession().setAttr
export default {
encrypt(data, keyStr = 'fXoY5SYpr2uz4yFr', ivStr = 'UV4kibe6BDBN3HrE') {
let key = CryptoJS.enc.Utf8.parse(keyStr);
let iv = CryptoJS.enc.Utf8.parse(i
在项目中如果要对前后端传输的数据双向加密, 比如避免使用明文传输用户名,密码等数据。 就需要对前后端数据用同种方法进行加密,方便解密。这里介绍使用 CryptoJS 实现 AES 加解密。
首先需要下载前台使用 CryptoJS 实现 AES 加解密的,所以要先下载组件,下载 CryptoJS-v3.1.2 版本之后,文件中包含components 和 rollups 两个文件夹,components 文件夹下是单个组件,rollups 文件夹下是汇总,引用 rollups 下的 aes.js 文件即可。
https://www.cnblogs.com/cndarren/p/15108270.html
https://blog.csdn.net/qq_40323256/article/details/116947888
下载crypto-js
cnpm i -S crypto-js
import CryptoJS from "crypto-js";
加密解密数据
// 此处key为16进制
let key = '385f33cb91484b04a177828.
AES128,AES192和AES256是三种常用的对称加密算法,都是基于AES(Advanced Encryption Standard)算法设计的。
AES128使用128位密钥,可以加密128位的数据块,安全性较高,速度较快,适用于大多数应用场景。
AES192使用192位密钥,可以加密192位的数据块,安全性更高,但速度较慢,适用于对安全性要求较高的应用场景。
AES256使用256位密钥,可以加密256位的数据块,安全性最高,但速度最慢,适用于对安全性要求极高的应用场景。