本文转自 https://blog.csdn.net/mrpre/article/details/77866824
1:对称加(解)密
加密和解密使用同样的密钥。举个例子就知道了。假设现在有一段明文:
0010 1101 1110 0101,以及一个密钥:0111,我们定义加密方式是“异或”,4 bit一加密。那么0010 1101 1110 0101 最终将会转换成 0101 1010 1001 0010。
如果我们想要解密,那么只需要将0101 1010 1001 0010与 0111异或即可,
得到结果0010 1101 1110 0101,即得到加密前的明文。总的来说,加解密使用同一密钥的,我们就称之为“对称加(解)密”。
2:非对称加(解)密
非对称加密较之前的对称加密而言,更为复杂,涉及到了例如欧拉公式、费马小定理、中国剩余定理等众多的数学基础,但是简单的来讲,所谓非对称加密,就是加密和解密使用的不是同一个密钥,比如现在有一对密钥(Pubkey,Prikey),
Pubkey称之为公钥,Prikey称之为私钥,所谓“非对称”性:
(1):使用Pubkey加密的数据,只能用Prikey解密。
(2):使用Prikey加密的数据,只能使用Pubkey解密。
只要Pubkey和Prikey之间满足一定的数学关系就能达到这种对称性,而这种数学关系,即不能从Pubkey推导出Prikey,也不能从Prikey推导出Pubkey。
我们将在SSL高级篇中,详细讲如何使用数学来构造Pubkey和Prikey,但在本文中,我们仅仅讲怎么灵活使用这种非对称的特性,来实现SSL的三种功能。
非对称加解密在证书验证,密钥交换的地方会用到,后面会讲到。
3:摘要
对于摘要算法,大家比较熟悉的就是MD5、SHA,这些都是摘要算法。摘要算法是一种不可逆的算法,所以一般来说摘要算法不能算作加密算法。
举个例子,来看看什么是摘要算法,以及摘要算法的特点是什么。
Data1 = “1234567831315641631512312” (26字节)
MD5(Data1) = d9a70e89bc06620a80ce383e0b0fc77a (16字节)
Data2 = “1234567831315641631512313” (26字节)
MD5(Data2) = 907be2e64b0de423f671b223fec9d31c (16字节)
Data3 = “31315641631512” (15字节)
MD5(Data3) = 2da9917d1a5a134ee204465118a67b2c (16字节)
我们很容易总结出摘要算法的特点:
(1):不同的数据,即使是一字节改变,其摘要的结果变化非常大。
(2):无论摘要的输入长度是多少,其输出是固定长度,对于MD5而言输出16字节,对于SHA1而言,输出20字节。
(3):无法从摘要的结果中得出原文。只有输入相同的明文数据经过相同的摘要算法才能得到相同的结果。
其实摘要算法一直伴随着大家。比如Linux系统,它不会把你root账号的密码明文的存到文件系统或者内存中的,它保存的是密码摘要的结果。比如你的密码是“qq123”,那么在Linux系统中,保存的是“5683465989c338e48b9de8685d36bdeb”,甚至连Linux自己都不知道你原始设置的密码是什么。那么当你输入Linux系统密码的时候,Linux如何验证你输入的是否正确呢?很简单,如果你输入qq123,Linux会对其做摘要,摘要的结果就是“5683465989c338e48b9de8685d36bdeb”,Linux对比摘要结果和自己保存的原始密码摘要的结果,发现一样,那么认为你输入对了。
---------------------
作者:Mrpre
来源:CSDN
原文:https://blog.csdn.net/mrpre/article/details/77866824
版权声明:本文为博主原创文章,转载请附上博文链接!