vue2+crypto-js实现AES加密、解密

使用步骤之前废话多,先装着插件,然后有兴趣了解的再慢慢了解。
安装 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节日快乐!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值