每日鸡汤:每个你想学习的瞬间,都是未来你的向自己求救
内容预警*****新手内容,自己学习总结用****大佬请绕道
之前看https原理,看到对称加密和非对称加密,各种加密方法,看得云里雾里,即便是总结了这篇文章,但是过几天就忘了,所以理论和实践还得结合才对。
最近遇到一个项目,需求是:【把一个数据加密存储到本地localstorage,然后用的时候取出来再解密。】
其实不管是https中的加密解密,还是其他项目的加密解密,原理是一样的,都是用的一套算法。所以常用的几个加密/解密算法也是一致的,不管你是前端开发还是后端开发。
前端开发的常用的包是 crypto-js,这个包包含了所有我们常用的加密/解密算法。
在我这个项目中我们使用一个key 来加密一段文字text,生成secretText,解密的时候也用这个key来解密secretText得到text;这样在加密和解密的过程中我们都用到了同一个key。这种就是传说中的对称加密,比如AES算法。
https在传输过程中的数据就是用对称加密传输的,对称加密用的key(就是上面说的那个key)则是用非对称加密传输的。
非对称加密,顾名思义,肯定是加密/解密过程不能用同一个key. 常用的非对称加密是RSA,这个就可以使用另一个包js-crypto-rsa了。但是我在实际项目中没有用到过,所以先记住RSA是非对称加密算法就行,等我用到了再来补充。
小结,其实只有两个知识点
- AES是对称加密
- RSA是非对称加密
但是!问题来了,我就是总搞混着两个,都是三个字母,咋记啊?动手写一次就知道了,我们前端用的加密常用的就是对称加密就是AES算法,重要的事情说三遍AES是对称加密,AES是对称加密,AES是对称加密。
还有一个问题,他们经常说的md5是啥,反正就是很常用?
md5是一种散列(哈希)算法,没错散列算法,也叫哈希算法,把任意成都的输入变换成固定长度的输出,常见的有md5,sha1等。
没错,哈希算法也是一种加密算法,但是区别是他是
- 不可逆的(不能更具输出推算输入)
- 输出出的长度是相同的。
- 相同的输入每次计算会产生相同的输出
- 不同的输入输出一定是不同的
所以我们在开发过程的过程中,假如有一个文件(或文字),我们可以计算一下他的md5,然后过一段时间再计算一次,如果两次结果相同那么这个文件一定没有改动过,反之文件一定有更改。由此可见,可以使用哈希算法来判断数据的唯一性。是一种信息摘要算法
小结,其实只有两个知识点
- md5,sha是哈希算法
- 哈希算法不可逆
本篇文章知识点总结
- 记住2组单词 AES/RSA. 和 md5 / sha
- AES/RSA 用来加密/解密
- md5 / sha 用来做信息摘要