前端常见数据加密问题概述

前端数据加密问题

前端一般使用md5、base64加密、sha1加密数据,来处理用户敏感信息。

函数escape()和unescape()

最简单的加密解密:

  • escape() 函数可对字符串进行编码
    • 不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换。
  • unescape() 函数可对通过 escape() 编码的字符串进行解码。
    • 通过找到形式为 %xx 和 %uxxxx 的字符序列(x 表示十六进制的数字),用 Unicode 字符 \u00xx 和 \uxxxx 替换这样的字符序列进行解码。
window.escape('中国')
"%u4E2D%u56FD"

window.unescape('%u4E2D%u56FD')
"中国"

base64加密

介绍:

​ base64是网络上最常见的用于传输8bit字节码的编码方式之一,base64就是一种基于64个可打印字符来表示二进制数据的方法。

https://en.wikipedia.org/wiki/Base64

常用js base64加密库:

​ https://github.com/dankogai/js-base64

原生js已经支持base64加密及解密:

  • 加密 window.btoa(decodeData)
  • 解密window.atob(encodeData)
window.btoa('huarukeji')      // "aHVhcnVrZWpp"

window.atob('aHVhcnVrZWpp')   // "huarukeji"

在这里插入图片描述

对于中文进行解密及加密之前需要先对中文进行转码:

  • encodeURIComponent() 函数可把字符串作为 URI 组件进行编码。
    • 不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ’ ( ) 。
    • 其他字符(比如 :;/?😡&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。
  • decodeURIComponent() 函数可对 encodeURIComponent() 函数编码的 URI 进行解码。
window.btoa(window.encodeURIComponent('中国'))  
"JUU0JUI4JUFEJUU1JTlCJUJE"

window.decodeURIComponent(window.atob('JUU0JUI4JUFEJUU1JTlCJUJE'))
"中国"

在这里插入图片描述

encodeURIComponent相关可参考

md5加密

介绍:

​ MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。

​ 具体来说,文件的MD5值就像是这个文件的“数字指纹”。每个文件的MD5值是不同的,如果任何人对文件做了任何改动,其MD5值也就是对应的“数字指纹”就会发生变化。比如下载服务器针对一个文件预先提供一个MD5值,用户下载完该文件后,用这个算法重新计算下载文件的MD5值,通过比较这两个值是否相同,就能判断下载的文件是否出错,或者说下载的文件是否被篡改了。

​ 利用MD5算法来进行文件校验的方案被大量应用到软件下载站、论坛数据库、系统文件安全等方面。

常用js md5库:

https://github.com/blueimp/JavaScript-MD5

sha1加密

介绍:

​ 安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准 (Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。

常用js sha1库:

https://github.com/emn178/js-sha1

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值