CryptoJS中AES256(CBC)加密算法简单使用
来源:互联网 发布:ubuntu清空文件夹 编辑:程序博客网 时间:2024/06/18 14:34
1.CryptoJS脚本下载
下载地址:http://pan.baidu.com/s/1slwHVLb
2.WordArray (An array of 32-bit words.)
使用AES加密前,先了解下WordArray,我把它理解成CryptoJS中定义的 新的 数据类型,叫“单词数组”。
2.1 : 初始化
var wordArray = CryptoJS.lib.WordArray.create();//创建一个空的 WordArray对象
2.2 : WordArray 对象 —>16进制字符串
var string = wordArray.toString();//默认CryptoJS.enc.Hex,即16进制字符串 var string = wordArray.toString(CryptoJS.enc.Utf8);//utf-8字符串
2.3 : 16进制字符串 —>WordArray对象
var wordArray = CryptoJS.enc.Hex.parse(hexString);
2.4 : WordArray对象—>utf8字符串
var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);//等价于2.2中 wordArray.toString(CryptoJS.enc.Utf8);
2.5 : utf8字符串—>WordArray对象
var wordArray = CryptoJS.enc.Utf8.parse(utf8String);
2.6 : WordArray对象—>Base64字符串
var base64String = CryptoJS.enc.Base64.stringify(wordArray);
2.7 : Base64字符串—>WordArray对象
var wordArray = CryptoJS.enc.Base64.parse(base64String);
3.简单使用
<script src="<%=request.getContextPath()%>/js/cryptojs/crypto-js.js"></script>
<script>var message = "1_2_3_4_5_6_7_8_9_0";//utf8字符串,待加密var iv = CryptoJS.lib.WordArray.random(128 / 8).toString(CryptoJS.enc.Hex);//随机生成长度为32的16进制字符串。IV称为初始向量,不同的IV加密后的字符串是不同的,加密和解密需要相同的IV。var key = "0321ebeba1f75de2d3cd3471af7418a4";//秘钥。长度32的16进制字符串。var cryptkey = CryptoJS.enc.Hex.parse(key);//将16进制字符串转换为 WordArray对象//或者 //var key = "qwertyuiopasdfgh";//长度16的utf8字符串//var cryptkey = CryptoJS.enc.Utf8.parse(key);//将utf8字符串转换为 WordArray对象//重点是 key要转换为WordArray对象,加密时要用。//测试var ciphertext = aesEncrypt(message,cryptkey,iv);//加密var decryptedMessage = aesDecrypt(ciphertext,cryptkey,iv);//解密alert(decryptedMessage);//1_2_3_4_5_6_7_8_9_0</script>
<script>//** 加密 **//var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);//params: 注意参数key为WordArray对象//return: 密码对象 或者 密码对象Base64字符串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;//密码对象(Obejct类型,非WordArray类型),Base64编码。 //return ciphertext.toString();//密码对象的Base64字符串}//** 解密 **//var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);//params: 注意参数ciphertext 必须为 Base64编码的对象或者字符串。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);//WordArray对象转utf8字符串}</script>
4.延伸
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);//密文 转 Base64字符串}//解密函数 稍有改动。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);}
4.总结
很多都是自己的理解,希望不会有大的偏差。最近这个项目,遇到了AES加密,才有所了解。真是路漫漫其修远兮啊。。。
- CryptoJS中AES256(CBC)加密算法简单使用
- CryptoJS中AES256(CBC)加密算法简单使用
- 在java项目中使用AES256 CBC加密
- CryptoJS简单使用
- CryptoJS简单使用
- CryptoJS简单使用
- CryptoJS简单使用
- CryptoJS简单使用
- CI加密,cryptojs解密, 使用aes-256-cbc
- Aes256的CBC模式加密
- aes256加密算法源码
- PHP AES256加密算法
- java Aes256 加密算法的实现
- (转)PHP AES256加密算法
- jni使用openssl AES256位加解密(cbc模式),匹配java后端服务器算法,解决末尾乱码问题
- CBC加密算法源码分享
- CryptoJS 使用MD5加密
- CryptoJS 使用AES加密
- php环境搭建
- $(window).width()与window.innerWidth的区别
- 初步了解java中的import和package
- Spark快速开始
- There is a cycle in the hierarchy
- CryptoJS中AES256(CBC)加密算法简单使用
- 求解最大子数组
- 欢迎使用CSDN-markdown编辑器
- HDU 1284 钱币兑换问题 完全背包
- vb.net 教程 3-2 窗体编程之窗体 1
- POJ 1465 Multiple(BFS+同余剪枝)
- 洛谷 P2045 方格取数加强版 (费用流)
- tld xml cvc-complex-type.2.4.a: Invalid content was found starting with element
- 一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10