1. MD5加密算法
MD5公开算法,任何语言实现后都一样,通用的不可用加密,只能从原文加密出密文,密文无法解密出原文。
总结:
(1) 相同原文加密结果是一样的
(2) 不同长度的内容加密后都是32位
(3) 原文差距很小,加密后密文差距很大
(4) 加密文件时,都能产生32位长度摘要,相同文件不同名称,加密后产生的结果一致。
应用场景:
(1)防篡改
源代码管理器:源代码被修改后,MD5加密值也会随之更改,会出现标红的迹象,提示有篡改。
(2)极速秒传
比如百度云上传文件时,几百兆文件会瞬时上传,这是由于上传的时候先上传MD5文件摘要,后台会自动在服务器进行摘要比对,如果服务器上已经有该文件,就会无需上传,直接在服务器指向路径指向你的文件,直接显示上传成功,也就是极速秒传。
(3)密码保存,防止看到明文
密文是可见的,所以要求密码不能太简单,有些MD5反解析网站利用穷举的方式可能在他的数据库里找到,但是不可能全部穷举出来,所以我们可以对密码“加盐”,就是放一些特殊字符字母之类的,就不会被轻易破解了。
(4)防止抵赖,数字签名
把一些内容摘要加密一下,不能被别人抵赖。
2. 对称可逆加密算法DES
对称可逆加密公开的算法,任何语言实现后都一样,通用的加密后能解密回原文,但需要一个key。加密和解密的key是同一个。
优势:加解密速度快
劣势:密钥的安全问题:如何传递key给对方不被黑客获取呢?
3. 非对称可逆加密算法RSA
非对称可逆加密公开的算法,任何语言实现后都一样,通用的加密key和解密key不是同一个,而是一对。加密key和揭秘key是不能相互推导的,有密文没有解密key,也推到不出原文。
优势:安全性好
劣势:加解密速度慢
密钥对外公开结果:
公开加密key:保证数据的安全传递(只有我能解密)
公开解密key:保证数据的不可抵赖(只有我能加密)
4. 数字证书SSL
在互联网安全传输信息要保证以下三点:
(1)保密,只有你和目标能看懂内容
(2)完整,不被修改
(3)可获得,信息可以拿到
信息传输一般是点对点进行传输,可能经过很多网关,通信相互之间没有信任关系,保证以上三点,需要建立一个信任,如何建立这个信任呢?
答:需要一个第三方机构,在互联网上称为CA机构(我们无条件信任这个可靠的权威机构)
假设,XX公司想和想和客户的浏览器建立安全连接,需要XX公司向CA机构申请一个证书。
证书内容如下:
(1)持有者姓名(Common Name)
(2)发证机关(Issuer)
(3)有效日期(Validity)
(4)证件持有人公钥(Subject‘s Public key)(加密KEY)
(5)扩展信息(Extension)
(6)用发证机关对该证书的数字签名(Certificate Signature)
注意:数字签名是前五条信息MD5摘要,然后用CA的私钥进行加密,只有CA有加密KEY。(上文提到的保证数据不可抵赖)
我们使用的浏览器在安装下载的时候就会内置了一个CA根证书(CA解密key),可以对网站的证书进行解密,查看是不是安全网站。