JS加密【md5 、 crypto 、 crypto-js、jsencrypt】模块

let encrypted = cipher.update(text,‘utf8’,‘hex’); // 初始化加密密文

encrypted += cipher.final(‘hex’) //加密密文

const tag = cipher.getAuthTag() //生成标签,用于验证密文的来源

return [encrypted,tag,key,iv,algorithm] //返回加密密文和密文来源信息

}

// 解密

function decrypt(cipherTextList){

const [encrypted,tag,key,iv,algorithm] = cipherTextList //导入解密内容和解密需要用到的密钥

const decipher = crypto.createDecipheriv(algorithm,key,iv)

decipher.setAuthTag(tag) //传入验证标签,验证密文来源,当验证标签不一致时代码报错

let decrypted = decipher.update(encrypted,‘hex’,‘utf8’);

decrypted += decipher.final(‘utf8’)

return decrypted

}

let ciphered = encryption(1234556344) //加密后返回密文数组

let cipher = decrypt(ciphered) //解密后返回解密密文

console.log(ciphered[0]) // 628e1b71ae1d27ef5e01

console.log(cipher); // 1234556344




**3、crypto-js**  

通过自定义的密钥进行加解密,可以更灵活的加解密密文,但是因为密文的key在可以通过前端看到,所以加密的信息虽然通过解密网站无法解密,但是可以通过在前端得到的公共key进行解密



// crypto-js加密

const CryptoJS = require(‘crypto-js’);

function cryptoEncryption(aseKey,message){ //aseKey为密钥(必须为:8/16/32位),message为要加密的密文

var encrypt = CryptoJS.AES.encrypt(message,CryptoJS.enc.Utf8.parse(aseKey),{

mode:CryptoJS.mode.ECB,

padding:CryptoJS.pad.Pkcs7

}).toString();

return encrypt

}

// crypto-js解密

function cryptoDecrypt(aseKey,message){

var decrypt = CryptoJS.AES.decrypt(message, CryptoJS.enc.Utf8.parse(aseKey), {

mode: CryptoJS.mode.ECB,

padding: CryptoJS.pad.Pkcs7

}).toString(CryptoJS.enc.Utf8);

return decrypt

}

var aseKey = “12345678” //密钥一致才能进行解密

var encrpytText = “abc12345”;

var decryptText = ‘KLqoT18E3l+OoDFLwS8DsA==’

console.log(cryptoEncryption(aseKey,encrpytText)); //调用加密方法

console.log(cryptoDecrypt(aseKey,decryptText));//调用解密方法




**4、非对称加密:jsencrypt**  

非对称加密密钥生成网站:[http://web.chacuo.net/netrsakeypair]( )  

关于该加密模块,出现在自己做的一个后台管理系统项目中,前端是vue,后端是Java。应用的场景是需要前端通过公钥对需要加密的密文进行加密,后端通过私钥对前端加密的密文进行解密。这样能比之前三个能极大的提高密文安全性。相关的使用方式可以参照下面 **关于前端的其他加密解密好文**中的第二个。  

这里把关于**前端**方面简化后的代码贴在下方,可供参考,后端方面的参考下方链接的第二个博文



let encryptor = new JSEncrypt() // 新建JSEncrypt对象

let publicKey = 公钥 //设置公钥,可以从上面的非对称加密密钥生成网站中得到

encryptor.setPublicKey(publicKey) // 将得到的公钥通过setPbulicKey方法设置到JSEncrypt对象中

let rsaPassWord = encryptor.encrypt(‘加密密文’) // 对需要加密的数据进行加密,rspPassWord就是加密密文




[]( )**关于前端的其他加密解密好文:**

-------------------------------------------------------------------------------------



**1、前端使用CryptoJS的几种加密方式**  

[https://www.jianshu.com/p/7b5eb33512fd]( )  

**2、非对称加密(vue项目)**  

[https://blog.csdn.net/weixin\_42423019/article/details/82468626]( )



 



  



本文转自 [https://blog.csdn.net/weixin\_51033461/article/details/121697575]( ),如有侵权,请联系删除。
#  最后

**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。**

**因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

![img](https://img-blog.csdnimg.cn/img_convert/a69addefa7f5687e3a6af454a31ec5be.jpeg)

![](https://img-blog.csdnimg.cn/img_convert/2f9b5748577d0ba93e240e1eef54dead.png)

![](https://img-blog.csdnimg.cn/img_convert/3199864d75bc75d3f2757fd76c7d8451.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618191877)

**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**
资深开发者,这些资料都将为你打开新的学习之门!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618191877)

**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值