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位十六进制的数。
你输入任意长度的字符串,都会返回给你相应固定长度的十六进制返回值。这两个函数的返回值都被称为信息摘要