引语
最近一直在学习逆向的一些知识点,而密码学又和这一块有着密切的关系,所以就参加了一场公开课的学习,也算是对发中的加密解密的技术知识进行了一次扫盲,其实之前一直想去研究,但是公司的产品也没有多少用户量,项目也不算大,就没有做这一块的集成!但是我本人更偏向于安全攻防这一块,还是要学习一下的;
-
哈希算法(散列函数)
1.MD5加密 这个听的比较多,其实用的也比较多, MD5 是属于(哈希算法||散列函数 的一种)
此加密的特点是把任意数据通过算法给你生成一个 32位的字符串,不管这个数据是大还是小,小到一个字符||大到一部电影;都可以给你转换成 32 位字符 ,而且同一个数据 转换的 32位字符是同一个。
安全类型 是不可的逆 即----他可以从数据到 32位字符, 但是你无法根据 32位字符 还原到原始数据 ,不过网上也有 解密MD5 的网站,其实他们就是 在数据库里对一个数据以字典的形式(key--value)进行存储,然后 当您输入 32位字符的时候它们就会去数据库里查找遍历,如果找到给你对应的的数据!
2.从以上也许可以看出单纯的MD5加密并不一定安全,后来就想到一个办法
加盐 (4O12UI@I@#I#U@U#I@@@E@#I!I#@I#I@I@#wiiwirIW@I)其实就是一串随机的字符串,但是如果你知道这个盐也是可以有一定几率破解的,如果这个盐是写在代码里面是写死的,那如果是 人为的原因就不会安全了比如写在前端 我偷偷的 把盐给记住,我就通过CMD5这个网站进行,数据库查询,也许会得到想要的原始数据!所以这个时候,这个盐就尽量不要再前端代码写死,通过后台返回,保证每个用户的盐都是不一样的,这样就会相对安全一些!
记得前几年我们还可以找回密码,现在任何网站或者APP基本就没有找回密码的功能了,只能重置密码,因为密码数据都是通过MD5进行加密,服务器也不会保存你的明文密码,只会保存密文,而密文又是不可以逆的,所以如果你密码忘记了只能通过清空历史密码进行重置! - 很显然如果数据在传送过程中被拦截,那也是一个很大的问题 ,但是你要使用MD5进行加密,那自己人收到数据也没有办法解密的,这个时候只能使用另外一种安全加密方式---对称加密和非对称加密(RSA算法)
1.对称加密--有一个密钥 密钥----明文数据---密文数据(加密过程)
密钥----密文数据----明文数据(解密过程)
2.非对称加密---一对私钥和公钥 服务器端保存私钥,C端保存公钥,这样他们之间在传送数据的时候形成一个安全通道,但是这样有个问题,如果我拿到私钥和公钥一样可以获取数据情报,这个时候要用到对称加密对密钥进行再次加密这个应用的例子就是(数字证书) - 以上是自己的一些浅显记录