前端加密的简单总结

数据加密一般是为了前后端在数据交互过程中数据的安全。常见的做法有前端加密之后传输数据和启用HTTPS协议。现在主要简单总结前端数据加密

对称加密与非对称加密(可逆)

这两种是前端数据加密的两种表现形式。所谓的对称加密就是解密与加密是一套秘钥,而非对称加密解密与加密是两套不同的秘钥。

前端使用非对称加密的原理是前端公用一套加密算法,前端使用公钥对数据进行加密,后端使用时用秘钥将数据解密为明文,中间攻击人拿到密文,若果没有私钥的话是没办法破解的。
主要运用场景是登录或者是用户的私密信息(如银行卡项目信息)前端将其加密,并将加密数据传输给后端,后端用过秘钥解密获取信息。该过程可防止数据在传输的过程中被拦截。
因为前端的透明性,使用js进行非对称加密是相对安全的。对称加密算法有des, 3des, tdea, aes;非对称加密算法有rsa,d-h, ecc;

MD5与SHA(不可逆)

MD5与SHA均是哈希算法,哈希算法不是某一种算法,而是特指一类算法,哈希算法又叫散列算法,是一种只能加密,不能解密的密码学算法。只要符合这类算法的特点就属于哈希算法(就是讲任意长度的输入转换为固定长度的输出)。

其主要原理: 其将明文转换成一段散列值(摘要),将报文摘要加密后与明文一起传送给接受方,接受方将接受的明文产生新的报文摘要与发送方的发来报文摘要解密比较,比较结果一致表示明文未被改动,如果不一致表示明文已被篡改。
应用场景:用户密码的加密,请求参数校验,文件下载校验

MD5

md5是不可逆的,经过MD5加密的数据是不可解密的。
MD5的值不是唯一的,一个原始数据对应一个MD5值;但是一个MD5值。可能对应多个原始数据。
MD5的加密原理是哈希算法。
因为MD5是不可逆的,所以不存在解密这一说;md5可以用来做校验,具体来说文件的md5值就像文件的指纹,每个文件的md5值是不同的,任何人对文件做了修改,其MD5值也会改变。
md5的js方法参考:https://github.com/blueimp/JavaScript-MD5

sha-1

sha表示安全哈希算法,sha-1是改算法的一个版本,其他版本还有sha-2;has-1是160位的哈希值,而has-2是组合值,有 不同的位数,其中最受欢迎的是256位。
sha1与MD5的最大区别在于其摘要比MD5摘要长32比特。运行速度比MD5慢。
has-1的js方法参考:https://github.com/emn178/js-sha1

base64加密与解密(可逆)

理论上不算加密,这个只是将文本按照一定的编码格式从新写一遍,但是可以起到一定的加密作用。这个更适合叫转码与解码。

对兼容性没要求的换可以是用js原生支持的window.btoa()与window.atob()方法进行转码与解码(js已经原生支持base64的转码与解码)。
需要注意的是window.btoa()将ascii字符串或二进制数据转换成一个base64编码过的字符串,该方法不能直接作用于Unicode字符串。因此最后对传入该方法中的数据进行转码

如果对兼容是有要求的那么就要使用插件js-base64进行处理

相关知识点
ASCII编码,占用0 - 127用来表示大小写英文字母、数字和一些符号。
Unicode字符,Unicode是为了解决传统的字符编码方案局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言,跨平台进行文本转换,处理的要求

参考文档:http://www.likecs.com/show-30596.html
参考文档:https://www.cnblogs.com/chenlong-50954265/p/5647056.html

你可能感兴趣的:(前端加密的简单总结)