使用步骤之前废话多,先装着插件,然后有兴趣了解的再慢慢了解。
安装 crypto-js:
npm install crypto-js
或者
npm install crypto-js --save
前言
高级加密标准(Advanced Encryption Standard,AES)是美国联邦政府采用的分组密码标准,旨在替代数据加密标准(DES),块长度固定为128位,加密过程包含AddRoundKey、SubBytes、ShiftRows和MixColumns四个步骤。
在密码学中,加密算法分为双向加密和单向加密。单向加密包括MD5、SHA等摘要算法,它们是不可逆的。双向加密包括对称加密和非对称加密,对称加密包括AES加密、DES加密等。双向加密是可逆的,存在密文的密钥。AES算法是DES算法的替代者,也是现在最流行的加密算法之一。
一、AES加密背景
高级加密标准(Advanced Encryption Standard,AES)是美国联邦政府采用的分组密码标准,由比利时密码学家Joan Daemen和Vincent Rijmen设计,又称Rijndael加密法。该标准于2001年11月26日由美国国家标准与技术研究院(NIST)发布于FIPS PUB 197文件,2002年5月26日生效,旨在替代数据加密标准(DES)。其区块长度固定为128位,密钥长度可选128、192或256位,加密过程包含AddRoundKey、SubBytes、ShiftRows和MixColumns四个步骤。
1997年NIST启动替代DES的算法征集,要求候选算法分组长度至少128位,密钥可选128/192/256位。1999年4月从15个候选算法中筛选出5个入围方案,2000年10月选定Rijndael算法,2001年正式确立为AES。该标准在实现时对原Rijndael算法进行了标准化约束,现已成为商业数据加密的国际标准,支持ECB、CBC、CFB和OFB等多种加密模式,应用于短分组加密等技术领域。
严格地说,AES和Rijndael加密法并不完全一样(虽然在实际应用中二者可以互换),因为Rijndael加密法可以支持更大范围的区块和密钥长度:AES的区块长度固定为128位,密钥长度则可以是128,192或256位;而Rijndael使用的密钥和区块长度可以是32位的整数倍,以128位为下限,256位为上限。加密过程中使用的密钥是由Rijndael密钥生成方案产生。
大多数AES计算是在一个特别的有限域完成的。
AES加密过程是在一个4×4的字节矩阵上运作,这个矩阵又称为“体(state)”,其初值就是一个明文区块(矩阵中一个元素大小就是明文区块中的一个Byte)。
二、使用步骤
1.引入库
代码如下:
npm安装
npm install crypto-js
页面引入
import crypto from '@/utils/crypto.js'
2.使用
加密代码如下:
// 定义全局变量
//加密密钥16位
var encrypt_key = '1234567890123456'; //长度必须为16位,随便写,解密的时候还是用这个就行
//加密向量16位
var iv = '1234567890654321'; //长度必须为16位,随便写,解密的时候还是用这个就行
// 操作方法
caozuofunction(){
var data = {type: 1,id: 1,name:1};
data = JSON.stringify(data);//需要是字符串
var ceshi = this.jiamifangfa(data);
console.log(ceshi,"测试加密");
},
// 加密方法
jiamifangfa(datas) {
// 调用加密
var shuju = crypto.encrypt(datas, encrypt_key, iv);
return shuju
},
3.解密
解密代码如下:
// 操作方法
caozuofunction(){
var data = {type: 1,id: 1,name:1};
data = JSON.stringify(data);//需要是字符串
var ceshi = this.jiamifangfa(data);
console.log("测试加密:",ceshi);
var ceshi2 = this.jiemifangfa(ceshi);
console.log("测试解密:",ceshi2);
},
// 解密方法
jiemifangfa(datas) {
// 调用解密
var shuju = crypto.decrypt(datas, encrypt_key, iv);
return shuju
},
4.完整加密、解密实例
解密代码如下:
<script>
import crypto from '@/utils/crypto.js'
// 定义变量
//加密密钥16位
var encrypt_key = '1234567890123456'; //长度必须为16位,随便写,解密的时候还是用这个就行
//加密向量16位
var iv = '1234567890654321'; //长度必须为16位,随便写,解密的时候还是用这个就行
export default {
data() {
return {}
},
methods: {
// 操作方法
caozuofunction(){
var data = {type: 1,id: 1,name:1};
var ceshi = this.jiamifangfa(data);
data = JSON.stringify(data);//需要是字符串
console.log("测试加密:",ceshi);
var ceshi2 = this.jiemifangfa(ceshi);
console.log("测试解密:",ceshi2);
},
// 加密方法
jiamifangfa(datas) {
// 调用加密
var shuju = crypto.encrypt(datas, encrypt_key, iv);
return shuju
},
// 解密方法
jiemifangfa(datas) {
// 调用解密
var shuju = crypto.decrypt(datas, encrypt_key, iv);
return shuju
},
},
}
</script>
总结
以上就是vue2+crypto-js实现AES加密、解密了,希望可以帮助到你,祝大家1024节日快乐!

被折叠的 条评论
为什么被折叠?



