| 主要介绍两种加密方法:对称加密和非对称加密对称加密:加密和解密过程使用同一个秘钥。加密过程等价于用原文+秘钥得到传输的密文,解密过程等价于密文+秘钥推导出原文。
 常见算法有:DES、AES…
 优点:加密和解密速度较快,耗时短,适合数据较长时使用;秘钥可自定义。
 缺点:无法保证秘钥被安全传递,密文在传输过程中可能被第三方截获,如果秘钥也被截获,则传输的密码信息会被推导出,安全性较低。
 AES秘钥在线 const CryptoJS = require('crypto-js')
function aesEncrypt(data, keys, ivs) {
	 const res = CryptoJS.AES.encrypt(data, CryptoJS.enc.Utf8.parse(keys), {
	    iv: CryptoJS.enc.Utf8.parse(ivs), 
	    mode: CryptoJS.mode.CBC, 
	    padding: CryptoJS.pad.Pkcs7, 
	 })
	 return res.toString()
}
function desDecrypt(data, keys, ivs) {
	const res = CryptoJS.AES.decrypt(data, CryptoJS.enc.Utf8.parse(keys), {
	    iv: CryptoJS.enc.Utf8.parse(ivs), 
	    mode: CryptoJS.mode.CBC, 
	    padding: CryptoJS.pad.Pkcs7, 
	 })
	 return res.toString()
}
 非对称加密:加密和解密过程使用两个秘钥,一般使用公钥进行加密,私钥进行解密。常见算法有:RSA、背包算法、ECC…
 优点:使用一对秘钥,公钥用来加密,私钥用来解密,不需要像对称加密那样同步秘钥,而且只能通过私钥来推导公钥,反之则不能,安全性较高。
 缺点:加密和解密花费的时间较长、速度较慢,适合对少量数据的使用。
 RSA秘钥在线生成 import JSEncrypt from 'jsencrypt'
const pubKey = 'xxx' 
const priKey = 'xxx' 
function rsaEncrypt(data){
	const encrypt = new JSEncrypt()  
	encrypt.setPublicKey(pubKey) 
	return encrypt.encrypt(data) 
}
function rsaDecrypt(data){
	const decrypt = new JSEncrypt()  
	decrypt.setPrivateKey(priKey) 
	return decrypt.decrypt(data) 
}
  
 非对称加密和对称加密的区别前端利用jsencrypt.js进行RSA加密
 |