目录
不可逆加密(安全)
不能解密,SHA1,MD5。
对称可逆加密(速度快,效率高,安全差)
加密和解密key都是一样的,DES,IDEA,AES。
非对称可逆加密(特别适用于分布式系统)
加密和解密key是不一样的,RSA,DSA。
MD5
用途
- 字符串加密。
- 文件加密可以做摘要,无论原文如何,都能得到一个16位或者32位字符串。
是什么
MD5算法可以看作是一台机器,计算机上的任何内容被丢进去,都将输出一个长度固定为128比特的MD5值。
比特是什么
- 比特是计算机最基本的存储单元。
- 二进制中的一位,就叫做1bit,也就是0或者1。
字节是什么
- 英文字符通常是一个字节,中文字符通常是两个字节。
- 1Byte=8bit。
为什么MD5不可逆
- MD5算法生成散列值的过程分为三步:填充对齐,分块,多轮压缩。
- 比如输入一个消息内容,首先要对它进行补齐操作,比如现在一共715个比特,需要把它补齐为512 比特的整数倍大小,那就在后面补上309个比特数据,变成1024比特,是512的2倍。
- 在补齐的数据中,最后64位固定长度用来表示原始数据的大小,小端在前的格式也就是715,中间剩 下的比特第一个填1剩下的都是0。
- 如果现在输入数据的大小是972,和1024只相差52比特,这放不下最后固定用来表示原始长度的64 比特数据,所以需要把它补齐到512的下一个整数倍,也就是1536比特,这样又可以在最后填上 表示原始数据大小的64比特数据,中间的还是老样子第一位是1,其它是0。
- 比如刚好输入的是512的整倍数,就是512,为了能够填上最后必须的64位数据,也得把它补成1024 比特。
- 补齐后进行第二步操作分块,因为已经把数据补成了512比特的整倍数,所以现在就一定能把它们分 成若干个512比特的数据块。比如现在是2大块,MD5最后输出的是一个128比特的散列值,作者把 它分成了四个部分,并用4个幻数设定了它们的初始值。
- 进入最后一步,从第一个大块开始,在每个大块上进行多轮压缩,把当前散列值的4个部分各自复制 一份,分别用a,b,c,d表示,压缩一共有四轮,每轮压缩过程使用数据块和a,b,c,d进行一系列与, 或,非,和循环位移的位操作,把a,b,c,d各自更新4次。四轮压缩则一共把a,b,c,d更新了16次。
- 完成4轮压缩后,把最后得到的a,b,c,d分别加回当前散列值的四个部分,散列值被更新。
- 之所以要压缩,是因为整个过程实际上是在用512比特的数据块,来更新128比特的散列值,信息 被压缩了。
- 然后再用第二个大块,操作是和前一个大块是一致的,唯一不同的是,此时散列值的初始值是前一个 大块的最终值。
- 如果后面还有更多的512比特的大块,都是这样去操作。
- 当在所有大块上完成多轮压缩,散列值也就被更新为最终输出的MD5值。
- 最后再把这四个部分合起来。
RSA
RSA公开解密可以做数字签名,我解密的这个东西一定是来自于谁的。
CA机构
- CA机构一般用自己的加密key,加密一下网站的基本信息,然后把证书放在该网站的服务器上。
- 浏览器内置了该网站的CA证书,当浏览器请求该网站的时候,该网站的服务器会先查看浏览器内置的 CA证书和服务器上面的CA证书是否一致。
- 浏览器第一次请求的时候会经过多重认证,如果浏览器没有关闭那么再次请求的时候就不需要那么多 的认证。