加密解密介绍

DES

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

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

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

RSA

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

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

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

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

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

SHA1

SHA1 和 MD5 是 散列算法,将任意大小的数据映射到一个较小的、固定长度的唯一值。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为 雪崩效应。散列还应该是防冲突的,即找不出具有相同散列结果的两条信息。具有这些特性的散列结果就可以用于验证信息是否被修改。MD5 比 SHA1 大约快 33%。
使用场景:多用于密码储存

MD5

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

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

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

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

SHA256

SHA256是安全散列算法SHA(Secure Hash Algorithm)系列算法之一,其摘要长度为256bits,即32个字节,故称SHA256。SHA系列算法是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院(NIST) 发布的一系列密码散列函数,包括 SHA-1、SHA-224、SHA-256、SHA-384 和 SHA-512 等变体。主要适用于数字签名标准(DigitalSignature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。
使用场景: 比特币就是使用SHA256 ,多用于密码储存

使用

第一步安装

npm i -s sha1 crypto-js  jsencrypt   js-sha256 js-base64 crypto    --save

第二部创建加密工具类crypto.js

//保存为crypto.js
import crypto from 'crypto'
import jsSha from 'js-sha256'
import base64 from 'js-base64'
import sha1 from 'sha1'
import rsa from 'jsencrypt';
import des  from 'crypto-js';//DES对称加密
/*
* message:需要加密的字符串,对象加密需要转成json字符串
* key: 密钥(加密解密密钥同一个)
*/
export const  desEncryptCrtpto =(message, key = 'xxxxxxxxxxxxxxxxxxxxx')=> {const keyHex = des.enc.Utf8.parse(key)const option = { mode: des.mode.ECB, padding: des.pad.Pkcs7 }const encrypted = des.DES.encrypt(message, keyHex, option)let data = encrypted.ciphertext.toString() // 返回hex格式密文,如需返回base64格式:encrypted.toString()return data
}/*
* message:需要解密的字符串,
* key: 密钥(加密解密密钥同一个)
*/
export const  desDecodeCrtpto =(message, key = 'xxxxxxxxxxxxxxxxxxxxx') =>{const keyHex = des.enc.Utf8.parse(key)const decrypted = des.DES.decrypt({ciphertext: des.enc.Hex.parse(message)},// 若message是base64格式,则无需转16进制hex,直接传入message即可keyHex,{mode: des.mode.ECB,padding: des.pad.Pkcs7})let data =  decrypted.toString(des.enc.Utf8)return data
}//md5
export const mdCrtpto = (pwd) => {let md5 = crypto.createHash('md5');md5.update(pwd);return md5.digest('hex');
}// sha256
export const shaCrypto = (pwd) => {return jsSha.sha256(pwd);
}//Base64
export const baseCrypto = (pwd) => {return base64.Base64.encode(pwd);
}//sha1
export  const sha1Crypto=(params)=>{return sha1(params);
}//rea 非对称加密, 后端生成公秘钥,前端使用公秘钥加密,后端使用私密钥解密
export const  rsaCrypto=(str)=>{//实例化rsalet jse = new rsa();//加密公钥(由服务端生成)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;
}

第三步使用

先在需要使用加密的vue文件中导入工具类

//加密算法
//加密算法
import { mdCrtpto, shaCrypto, baseCrypto ,sha1Crypto,rsaCrypto,desDecodeCrtpto,desEncryptCrtpto} from '../utils/crypto';

然后在方法中使用

      console.log('md5加密:' + mdCrtpto('123456')); console.log('sha256加密:' + shaCrypto('123456')); console.log('base64加密:' + baseCrypto('123456')); console.log('base64加密:' + sha1Crypto('123456')); console.log('sha1加密:' + sha1Crypto('123456')); const  salt="fesdb13632twfs;'." //盐//超复杂加密-基本不可破解console.log("超级加密:"+shaCrypto(sha1Crypto((baseCrypto(mdCrtpto(salt + "1234567" + salt))))))

点赞 -收藏-关注-便于以后复习和收到最新内容 有其他问题在评论区讨论-或者私信我-收到会在第一时间回复 如有侵权,请私信联系我 感谢,配合,希望我的努力对你有帮助^_^

Vue-常用加密(MD5,DES,SHA256,BASE64,SHA1,RSA)相关推荐

  1. C#加密解密(DES,AES,Base64,md5,SHA256,RSA,RC4)

    一:异或^简单加解密(数字类型) 1:原理: 异或用于比较两个二进制数的相应位,在执行按位"异或"运算时,如果两个二进制数的相应位都为1或者都为0,则返回0;如果两个二进制数的相应 ...

  2. 对称加密、非对称加密、DES、AES、RSA、OpenSSL、数字签名、防篡改

    本公众号分享的所有技术仅用于学习交流,请勿用于其他非法活动,如果错漏,欢迎留言指正 <加密与解密>第4版 加解密 安全领域的重要分支和基础设施 互联网重要数据的传输需要加解密 TCP/IP ...

  3. C#常用加密解密工具类(SHA1、MD5、DES、Base64)

    以下代码可直接使用 /// <summary>/// 字符串加密解密类/// </summary>public static class StringSecurity{#reg ...

  4. 用python实现MD5、sha256、sha384、sha512、base64加密

    文章目录 一.hashlib介绍 二.使用hashlib库进行md5加密 1.加密未混淆代码 2.混淆加密代码 三.使用hashlib库进行sha256.sha384.sha512加密 四.多重加密( ...

  5. python加密解密 sha256_Python加密方法小结【md5,base64,sha1】

    本文实例总结了python加密方法.分享给大家供大家参考,具体如下: MD5加密: def md5(str): import hashlib m = hashlib.md5() m.update(st ...

  6. python学习-通过md5/sha1/sha256/base64进行加解密

    hashlib模块为加密算法 MD5算法运行1000次的平均时间为:226ms SHA1算法运行1000次的平均时间为:308ms SHA256算法运行1000次的平均时间为:473ms 常见的为后面 ...

  7. java编码解码加密解密--md5、SHA-256、SHA-512、MAC、DES、AES、RSA

    md5 md5是一种散列算法,不可逆,是一种消息摘要算法,生成的字节数组的长度是128位,也就是等于16个字节,那么有的字节转化为字符之后,这些字符不一定是存在于ascii码之中,通常为了便于输出,我 ...

  8. 常见加密工具类Base64、DES、AES、RSA、MD5汇总

    文章目录 引言 1.Base64加密 2.DES加密 3.AES加密 4.RSA加密 5.MD5加密 引言 项目中经常会用到Base64.DES.AES.RSA.MD5几种加解密方式,每次都要去网上搜 ...

  9. Jva编解码,加密工具类大全(Base64编解码,URL 编解码,sha56_Hmac加密,MD5对字符串进行加密,java自带类实现SHA-256方式加密)

    Base64编解码 /*** Base64编码.*/public static String encodeBase64(byte[] input) {return new String(Base64. ...

最新文章

  1. Ferris教程学习笔记:js示例2.13 简易JS年历
  2. 插入,在PostgreSQL中重复更新吗?
  3. 李开复对谈张亚勤:科学家创业需要企业家伙伴,开放心态看待元宇宙 | MEET2022...
  4. 从bsp redirect到ui5_ui5
  5. 论文浅尝 | KGAT: 用于推荐的知识图注意力网络
  6. chrome 代理插件_Chrome浏览器拓展插件同步助手
  7. 自动建议下拉菜单_word排版技巧:如何撤销删除自动编号
  8. android接口和type c对比,USB Type-C究竟比3.5mm音频接口好在哪里?
  9. 关于URL的转码与解码
  10. 13号线ab线规划图_有图有真相,北京13号地铁将拆分为AB两条线
  11. matlab模拟滤波器频率响应,怎样求FIR滤波器在任意频率上的频率响应?
  12. R语言——单位根检验/平稳性检验
  13. 基于C语言实现的足球信息查询系统 课程报告+项目源码+演示PPT+项目截图
  14. Zookeeper集群一致性原理(强一致性)
  15. 税控服务器信息维护,税控服务器管理系统操作介绍(IE6版).ppt
  16. Python3.x 网络爬虫之淘宝模特照片信息爬取
  17. 【车载开发系列】UDS诊断---常见的ISO标准集合
  18. centos7安装bbr_centos7安装bbr记录
  19. GH3018超低功耗、超高精度的心率传感器
  20. 百思不得姐之图片处理(保存与下载)

热门文章

  1. SubstanceDesigner制作PBR材质制作并且同步到Unity小尝试
  2. 在python中用于获取用户输入的是-在Python中,用于获取用户输入的函数是
  3. 使用pyautogui实现坐标定位,自动化
  4. 输出一个菱形星星图案
  5. 算法设计技巧与分析(六):图遍历(Graph Traversal)
  6. [MP3]MP3固件持续分享(2019.1.25)
  7. 做一个电商网站需要多少钱
  8. 右击文件夹转圈圈,有时卡死
  9. 百度网盘简易下载工具介绍
  10. GetLastError()函数返回值对照列表