MD5、DES、RSA和数字证书

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),可以对网站的证书进行解密,查看是不是安全网站。

猜你喜欢

转载自www.cnblogs.com/w520/p/12361600.html
今日推荐