注:本文为自己对密码学内容的一些基础概念的见解并不涉及算法,只介绍一些概念方便初学者理解
学密码学,可能觉得内容很多,但密码学实际上就是一门基于加密与解密的学问,各种层出不穷的加密方式也很多。但现如今主要加密方式终归不过4大类,所以,密码学也就分为对称加密,非对称加密,哈希函数与公钥基础设施架构(PKI,在非对称加密的基础之上引入了CA证书概念)
对称加密与非对称加密
其中对称加密最简单,也最容易被破解。加密与解密使用同一个密钥,所以导致密钥分发时会有泄露的危险,密钥的管理需要十分小心,但其简单的加密方式也促成了他加密速度快,加密成本低的特点,为了得到最大的安全收益,他经常被使用于数据量大,数据机密性低的数据传输。而与之相对应的非对称加密实际上是一种密钥的保密方法,非对称加密算法需要两个密钥:公开密钥(publickey:公钥)和私有密钥(privatekey:私钥)。公钥与私钥是一对,接收方与发送方都分别拥有一公钥私钥。接收信息方将公钥公布出去,保管好私钥,如果发送方用接收方的公钥对数据进行加密,只有用接收方的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
哈希函数
哈希函数(Hash)又称为散列,我之所以叫他哈希函数,而不叫他哈希加密,是因为我觉得他在严格意义上不能算一种加密方式,他的本质是一个数学函数。比如一个数据数字5假如使用函数x²将他变成25,他还是一个明文,并没有实际意义上的将他变成一个密文。就好比哈希算法是一个烤箱,加入面粉,水等将他烤成面包,你不知道加了多少面粉,也不知道加了多少水,但出来的只能是面包。而加密算法像一个保险柜,将你的面粉和水锁起来。常见哈希算法有MD5、SHA(SHA-1、SHA-2、SHA-256等)其算法特点有不可逆性、可重复性(相同输入得到相同哈希值,而相同哈希值并非都是相同输入)、抗冲突(改变输入的很小部分,哈希的变化会很大,产生哈希冲突的几率很小)、输出长度固定。所以由于哈希的特性,可以用来验证数据的完整性。
哈希冲突:简而言之就是不同的输入结果得到相同的哈希值。
我们知道了哈希算法是有可能产生冲突的,而一些不怀好意的