初级密码学以及HASH函数介绍总结

所以的加密方法都不是绝对安全的,只是计算安全或相对安全

DES算法详解请参考上一篇
3EDS加密算法

由于密钥太短(2的56次方),DES被破解的可能性非常大,于是产生了3DES的算法。3DES即三重DES
,也称为三重加密算法,3DES使用了48轮运算,这使得它对于差分密码分析有很强的抵御能力。但是
因为其执行的额外操作过多,这使得严重影响到性能,用于加密时间为DES的三倍。

下面是它衍生的加密操作

3DES可以在不同模式下运行,选择的模式决定它所使用的密钥的数量和执行的能力,如下:
1.DES-EEE3:使用3个不同的密钥进行加密,数据被加密、加密、再加密;
2.DES-EDE3:使用三个不同的密钥进行加密,数据被加密、解密(当然是解密不出来的,相当于
再次加密)、再加密;
3.DES-EEE2:只使用两个密钥,加密、加密、再加密,第一个和第三个加密过程使用相同的密钥;
4.DES-EDE2:只使用两个密钥,加密,解密,再加密,第一个和第三个加密过程使用相同的密钥;

3DES的密钥大小为112和168位,增加了它的密钥长度,提高安全性

AES加密算法

AES属于密码学中的高级加密标准,又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。
分组大小和密钥大小都可以为128、192或156位。然后AES标准只要求分组大小为128位。因此,只有
分组长度为128位的Rijndael才称为AES算法。

这个标准用来代替原先的DES,已经被多方分析且广为全世界所用。经过五年的甄选流程,高级加密标
准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26
日成为有效的标准。2006年,高级加密标准已然成为对称加密中最为流行的算法之一。

由于密钥的大小不同,AES加入运算的轮次数也不相同;

密钥长度 轮数
128 10轮
192位 12轮
256位 14轮

非线性变换:不能预测下一个数

SM4

国产加密法,2006年我国颁布了SM4密码算法。这是我国第一次公布自己的商业密码算法。DES算法
、AES算法和国产的SM4算法的目的都是为了加密保护静态储存和传输信道中的数据。
国产SM4在计算过程中增加了非线性变换,理论上能大大提高其算法的安全性,并且由专业机构进行了			
密码分析,最后得出结论为安全性较高;

SM1

SM1de算法未公开,仅知密钥长度为128位,其加密强度与AES相当。调用该算法时,需要通过加密芯	
片的接口进行调用。
常用来做国内小额支付(如:电子钱包、门禁等)随身小件的加密

SM2—采用非对称加密
SM3—摘要算法
SM4—无线局域网标准算法
SM7—对称分组密码算法,128位用于门禁,ic卡等
SM9—标示密码算法

DES算法 AES算法 SM1算法 SM4算法
计算基础 2进制 16进制 未公开 2进制
算法结构 使用标准的算术和逻辑运算、先代替后置换,S盒非线性变换 字节代换、行代换、列代换,S盒非线性变换 未公开 基本轮函数迭代、含非线性迭代
加解密算法是否相同 未公开
计算轮数 16轮(3DES为16*3) 10轮(192为12轮、256为14轮) 未公开 32轮
分组长度 64位 128位 128位、128位
密钥长度 62位 128位 128位 128位
有效密钥长度 56位(3DES为112位) 128位(192位、256位) 未公开 128位
实现难度 易于实现 易于实现 未公开 易于实现
实现性能 软件实现慢、硬件实现快 较高,解密比加密效率高 未公开 软件实现和硬件实现都快
安全性 较低 较高 与AES相当 算法较新,国内应用标配

公钥密码

在对称加密的过程中,通讯双方始终需要解决的一个问题就是密钥如何传递的问题,大部分情况下会
使用不安全信道建立密钥传输,消息传递所使用的通信链路是不安全的。同时,通信双方拥有密钥相同
则能力相同,缺少不可抵赖性。

公钥的作用

因此在公钥的加密算法中,被传递出去部分的公钥是不惧怕被窃取的,这部分公钥只具备一部分能力,
仅能进行加密或解密一项操作,用来加密后再传送回来是不能再用公钥解密的,必须用自己手上的私钥
进行解密。

公钥还有一种功能就是能鉴别发出者的身份,通过私钥加密文件发送出去,如果能使用公钥解密那说明
该文件是私钥持有者发出。

公钥的弊端

由于公钥密码难以解决的数学难题上,因此公钥密码的算法效率比对称密码的算法效率低很多(100-100
倍)。公钥算法家族常见的算法。
算法家族 密码体系
整数分解 RSA
离散对数 DH、DSA、Elgamal
椭圆曲线 ECDH、ECDSA

因为公钥的效率十分低,所以很少会用于对大量数据的加密,一般用于:对称密钥的加密,或者用于数字签名

RSA算法

RSA应用广泛,但在实际中却常用于数据小片段的加密。虽然RSA作为非对称算法基础,逐渐被ECC
取代,但大部分数字证书依然使用RSA加密;

所有非对称方案的一个显著特征就是,它们都有一个计算公钥和私钥的握手阶段,密钥生成依赖于公钥
方案,因此十分复杂RSA中对密钥生成的定义如下:

输出:公钥:K_pub=(p,e)和私钥:K_pr=(d)
	1.选择两大素数p和q
	2.计算n=p*q
	3.计算Φ(n)=(p-1)(q-1)
	4.选择满足以下条件的公开指数e`∈`{1,2...Φ(n)-1}
				gcd(e,Φ(n))=1
	5.计算满足以下条件的条件的私钥d
				d*e=1modΦ(n)

摘要算法(hash函数)

hash函数通常称为单向散列函数,理论上是不可逆的。hash函数通常用于构建数据的指纹,当数据发生变化时,指纹也会发生变化。hash函数在设计时有如下规则:
1.高效的,对几百兆的大文件也必须够快;
2.长度是固定的,与输入长度无关;
3.敏感度必须高,意味着小改变都必须要有大变化;

hash函数通常被用于保证传输数据文件的鉴别是否被篡改

hash函数理论上是不可逆的,但并非就是绝对安全。2004年8月中国密码学家王小云教
授等首次公布了提供一种寻找MD5碰撞的新方法。几分钟就可找到MD5的碰撞。因此
2008年以后的MD5逐渐被更为安全的SHA-256替代,而在国内则使用国密SM3代替。

MD5如果按十六进制表示的话是32位十六进制的数,SHA-1是40位十六进制的数。
你输入任意长度的字符串,都会返回给你相应固定长度的十六进制返回值。这两个函数的返回值都被称为信息摘要

你可能感兴趣的:(初级密码学以及HASH函数介绍总结)