vue.js中DES、RSA、SHA1、MD5这四种加密算法的使用

  • DES
  • RSA
  • SHA1
  • MD5

DES

  • 美国 数据加密标准(DES)是对称密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。密钥较短,加密处理简单,加解密速度快,适用于加密大量数据的场合。

  • 前端有时把数据传给后端,也是需要加密的,这里介绍下des加密:
    DES 加密算法为最为常见的分组加密算法。其主要思想在于数据位的置换与移位过程,通过16次的迭代加密与最终的逆置换得出最终的密文。DES 的解密方式只需按照加密的逆过程求解即可。由于DES 加密过程的算法是公开的,所以密钥K的保密就显得尤为重要,只有发送方与接收方采用相同的密钥进行加密解密才能获取明文数据。

  • 使用场景:由于算法效率较高,一般用于对效率有要求的实时数据加密通信。比如在使用 VPN 或者代理进行 加密通信时,既要保证数据的保密性,又要保证不能有高的延迟,所以通常会使用对称加密算法。

  • vue中的使用

  1. 安装依赖 npm install crypto-js
  2. 在对应的文件中引入 import cryptoJs from ‘crypto-js’;
  3. 进行加解密操作
/*
* message:需要加密的字符串,对象加密需要转成json字符串
* key: 密钥(加密解密密钥同一个)
*/
export function encryptDes (message, key = 'xxxxxxxxxxxxxxxxxxxxx') {const keyHex = cryptoJs.enc.Utf8.parse(key)const option = { mode: cryptoJs.mode.ECB, padding: cryptoJs.pad.Pkcs7 }const encrypted = cryptoJs.DES.encrypt(message, keyHex, option)let data = encrypted.ciphertext.toString() // 返回hex格式密文,如需返回base64格式:encrypted.toString()return data}
/*
* message:需要解密的字符串,
* key: 密钥(加密解密密钥同一个)
*/export function decryptDes (message, key = 'xxxxxxxxxxxxxx') {const keyHex = cryptoJs.enc.Utf8.parse(key)const decrypted = cryptoJs.DES.decrypt({ciphertext: cryptoJs.enc.Hex.parse(message)},// 若message是base64格式,则无需转16进制hex,直接传入message即可keyHex,{mode: cryptoJs.mode.ECB,padding: cryptoJs.pad.Pkcs7})let data =  decrypted.toString(cryptoJs.enc.Utf8)return data}

RSA

  • RSA是 非对称算法,加密密钥和解密密钥是不一样的,或者说不能由其中一个密钥推导出另一个密钥。密钥尺寸大,加解密速度慢,一般用来加密少量数据,比如DES的密钥。

  • 公钥和私钥都可用于加密和解密。公钥和私钥都可以用于加解密操作,用公钥加密的数据只能由对应的私钥解密,反之亦然。虽说两者都可用于加密,但是不同场景使用不同的密钥来加密,规则如下:

  1. 私钥用于签名、公钥用于验签。
    签名和加密作用不同,签名并不是为了保密,而是为了保证这个签名是由特定的某个人签名的,而不是被其它人伪造的签名,所以私钥的私有性就适合用在签名用途上。
    私钥签名后,只能由对应的公钥解密,公钥又是公开的(很多人可持有),所以这些人拿着公钥来解密,解密成功后就能判断出是持有私钥的人做的签名,验证了身份合法性。

  2. 公钥用于加密、私钥用于解密,这才能起到加密作用。
    因为公钥是公开的,很多人可以持有公钥。若用私钥加密,那所有持有公钥的人都可以进行解密,这是不安全的!
    若用公钥加密,那只能由私钥解密,而私钥是私有不公开的,只能由特定的私钥持有人解密,保证的数据的安全性。

  • 使用场景:主要用于秘钥交换,证书等场景。

  • vue中的使用

  1. 安装依赖 npm install jsencrypt --save
  2. 在对应的文件中引入 import JSEncrypt from ‘jsencrypt’;
  3. 进行加解密操作
//加密
//str 未加密字符串
export function getEncryCode(str){//实例化JSEncryptlet jse = new JSEncrypt();//加密公钥(由服务端生成)let pubKey = `-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCmBjTNoNbIjrZVoEt5OBNM6zZ/
yDZ7wgv53A6ekTuAsqfJ3jXmLC7PqqrJxgqqDf2l72CnRC8ZxIAkiUBmIK/FIDrl
qCBPl1h0Ym8qPLmUuv5l3xmhlb6+a/v22444PW/U6Ur0l1BvbCorrsWV3leFFfLZ
5oT4mq9jXzkQLv8F6wIDAQAB
-----END PUBLIC KEY-----`jse.setPublicKey(pubKey);let  data = jse.encrypt(str.toString());  // 进行加密return data;
}
//解密
//params 待解密字符串
export function sendEncryCode(params){//实例化JSEncryptlet jse = new JSEncrypt();//使用前端私钥解密(私钥由服务端生成)let privKey = `-----BEGIN PRIVATE KEY-----MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAKYGNM2g1siOtlWgS3k4E0zrNn/INnvCC/ncDp6RO4Cyp8neNeYsLs+qqsnGCqoN/aXvYKdELxnEgCSJQGYgr8UgOuWoIE+XWHRibyo8uZS6/mXfGaGVvr5r+/bbjjg9b9TpSvSXUG9sKiuuxZXeV4UV8tnmhPiar2NfORAu/wXrAgMBAAECf0qUfyPgHJv7f+z3FPBfQExNXS4Jwm/Vu4uCTw7sLs6hcr48E/pR3rVq9U2uqRu7LTZdUg3Rk1b/7pB7F3LJPCuX5n/tnqcEWfWoyAc6wnVLffxkvx7toD7nMl7+2/LsUgSiY/QFdG43dKs+5rXuEOOwcZV/tLdivN9SEN44mEECQQDXls/rpMPYnd0IHHqh6YZEA3dH1CZAWeW/4XF/BINW/02mjtoNr+sTcZN9ekaLFTQnF/jJRi35dNwGhroG+k/hAkEAxST9oYDugGPTbu81JU1pnO8tLQPHvpVu3lGQEFahWZi6j70FlhNEhX74lDLrhvTOI4ohzHX28pU5TbQkiyl/SwJBALxQseHmFGR80HurVLtlnrB+TozhlWAUpolLRbZrnMY7T/qzQWk/Rxm+1dR/IGuQ4/NaDyjRMot6Nk9FE+3QbEECQQCXib+MDVdHSXSUqTro2YB9KTxIhcdcL/Fw4rEiXfTYshV1t447tcPN+bOJ9zokGrj5iIxCZcrU3O+XUwlkDxnRAkArwYiJZFlSLu9zj+e03+kGWu6c/x8RRoLqfZcWFffBZlkxOHa06aN6jYCdJtRON43JUbynMvDYl5glkcwnZlbi-----END PRIVATE KEY-----`jse.setPrivateKey(privKey);let data = jse.decrypt(params); //解密return data;
} 

SHA1

  • SHA1 和 MD5 是 散列算法,将任意大小的数据映射到一个较小的、固定长度的唯一值。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为 雪崩效应。散列还应该是防冲突的,即找不出具有相同散列结果的两条信息。具有这些特性的散列结果就可以用于验证信息是否被修改。MD5 比 SHA1 大约快 33%。
  • 使用场景:多用于密码储存
  1. 安装依赖 npm install sha1 --save
  2. 在对应的文件中引入 import sha1 from ‘js-sha1’
  3. 进行加密操作
  • vue中的使用
export function getEncryCode(params){//进行sha1加密let data = sha1(params)return data;
} 

MD5

  • MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法。

  • 一般登录的用户密码是用md5加密,系统中保存的也是加密后的用户密码,系统并不知道具体的用户密码是什么。

  • MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。举个例子,你将一段话写在一个叫 readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。

  • 使用场景:多用于密码储存

  1. 安装依赖 npm install js-md5 -D
  2. 在对应的文件中引入 mport md5 from ‘js-md5’
  3. 进行加密操作
  • vue中的使用
export function getEncryCode(params){//进行md5加密let data = md5(params)return data;
} 

vue.js中DES、RSA、SHA1、MD5这四种加密算法的使用相关推荐

  1. echarts怎么用在php,在Vue.JS中怎样使用echarts

    这次给大家带来在Vue.JS中怎样使用echarts,在Vue.JS中使用echarts的注意事项有哪些,下面就是实战案例,一起来看一下. 上篇文章给大家介绍了 在 webpack 中使用 EChar ...

  2. Vue.js中的MVVM

    MVVM的理解 MVVM拆开来即为Model-View-ViewModel,有View,ViewModel,Model三部分组成.View层代表的是视图.模版,负责将数据模型转化为UI展现出来.Mod ...

  3. cryptico.js java解密_從Cryptico.js中提取RSA私鑰

    我相信這是一個非常基本的問題,但我開始使用JavaScript和RSA進行研究,所以我有點失落.我剛剛下載了Cryptico庫,它爲我提供了一個易於使用的RSA密鑰生成/加密/解密.從Cryptico ...

  4. vue.js中mock本地json数据

    vue.js中mock本地json数据 新版本的vue项目中已经将dev-server.js,dev-client.js两个js文件合并到了webpack.dev.conf.js文件中,以下分别是新旧 ...

  5. VUE.js 中取得后台原生HTML字符串 原样显示问题

    今天使用vue调试页面,发现了页面上的一个问题,后台数据传过来的HTML字符串并没有被转换为正常的HTML代码,一拍脑门,发现忘记转换了,于是满心欢喜加上了{{{}}}.但是之后构建发现报错: 为此去 ...

  6. Xshell安装sql报错:······ RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: (MD5) PGP#3a79bd29)

    文章目录 Xshell安装sql报错:······ RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: (MD5) PGP#3a79bd29) 报错截图: 分 ...

  7. php动态写入vue,Vue.js中使用动态组件的方法

    本文介绍了如何在Vue.js中引用组件中的HTML元素.您可以通过使用Vue路由器或创建动态组件来切换视图或组件模板. Vue路由器用于在DOM中的视图或组件模板之间导航.要使用Vue路由器,请在ro ...

  8. 浅析Vue.js 中的条件渲染指令

    1 应用于单个元素 Vue.js 中的条件渲染指令可以根据表达式的值,来决定在 DOM 中是渲染还是销毁元素或组件. html: <div id="app"> < ...

  9. html5怎么改为vue_是否还在疑惑Vue.js中组件的data为什么是函数类型而不是对象类型...

    点击上方"前端印象",选择"设为星标"第一时间关注技术干货! 引言 要理解本篇文章,必须具备JavaScript中基本数据类型和引用数据类型的概念,大家可以花两 ...

最新文章

  1. 算法了解:RCNN、SPP-Net、Fast-RCNN、Faster-RCNN
  2. MySQL-Btree索引和Hash索引初探
  3. 信息系统项目管理师-项目成本管理考点笔记
  4. 软件工程进度条-第十二周
  5. 机器学习之数据集划分——训练集测试集划分,划分函数,估计器的使用
  6. druid 非对称加密_springboot配置文件中mysql的密码进行加密
  7. jrtplib使用注意事项
  8. 整数区间(信息学奥赛一本通-T1324)
  9. c语言if语句教学设计,C实验教案(清华)
  10. 【面向代码】学习 Deep Learning(二)Deep Belief Nets(DBNs)
  11. 计算机单词 硬件类、软件类、网络类、其他
  12. 爬虫基础之代理的基本原理
  13. python简易双人五子棋
  14. 锐捷服务器虚拟化技术_信息化的好拍档,锐捷助力南昌市第五医院再迎新征程...
  15. 关于一次pkgs --update错误记录(cmd_package_update 451)
  16. AOPlog4j2propagation的7种事务配置
  17. 做百度竞价推广的好处与坏处?
  18. dpi和ppi换算_DPI、PPI、DP、PX 的详细计算方法及算法来源是什么?
  19. 彩色流程图怎么做?这样的操作方法你尝试过吗?
  20. 怎么把英语视频转为音频怎么把MP4转换成mp3

热门文章

  1. 每日一题——最小生成树(哭死)
  2. D05——C语言基础学PYTHON
  3. Xendit获得1.5亿美元C轮融资,用于在东南亚构建数字支付基础设施
  4. 如何一键批量采集苏宁易购商品主图、详情图、及视频
  5. 安装mathtype以后word不能粘贴,提示宏安全
  6. java -jar 找不到依赖包_java找不到jar包的解决方法
  7. 元宇宙游戏开发 中国元宇宙游戏开发商蓄势待发
  8. plink格式的map文件和ped文件
  9. JavaScript中callee和caller的用法解读
  10. “柳传志们”让农产品成为品牌的秘籍