DES/3DES/AES
DES/3DES/AES
实验原理
DES算法的密钥长度已经被证明不能满足当前安全的要求,但为了充分利用现有的DES软件和硬件资源,人们开始提出针对DES的各种改进方案,最简单的方案是使用多重DES,使用多个不同的DES密钥利用DES加密算法对明文进行多次加密。这样可以增加密钥量,从而大大提高抵抗对密钥的穷举搜索攻击的能力。而最常用的多主要是三重DES算法。
算法原理
三重DES有4种模式,如下图1所示:
DES-EEE3 模式:该模式中共使用3个不同密钥,顺序使用3次DES加密算法。
DES-EDE3 模式:该模式中共使用3个不同密钥,依次用加密—解密—加密。
DES-EEE2 模式:该模式中共使用2个不同密钥,顺序使用3次DES加密算法,其中第一次和第三次加密使用的密钥相同。
DES-EDE2 模式:该模式中共使用2个不同密钥,依次用加密—解密—加密,其中加密算法使用的密钥相同。
DES-EEE3模式
DES-EDE3模式
DES-EEE2模式
DES-EDE2模式
图1 三重DES的使用模式
前两种模式使用3个不同的密钥,每个密钥长度为56位,因此三重DES总的密钥长度达到168位。后2种模式使用2个不同的密钥,总的密钥长度为112位。以前两种模式为例,设k1,k2,k3,是三个长度为56位的密钥。给定明文x,则明文为
给定密文y,则明文为
在1999年10月发布的DES标准报告中推荐使用的三重DES是k1=k3的情形,两个密钥的三重DES算法。这是一种比较受欢迎的DES的替代方案。银行业已大量采用这种算法。k1,k2,k3互不相同的三DES在实际应用中也经常被采用。下面我们给出k1=k3模式的三重DES加密和解密内部流程。
图2
算法参数
在三重DES算法中,其参数与DES是保持一致的,密钥总长度为64位。其中有效长度为56位,并附加上8位的奇偶校验位。分组长度为64位,初始置换IP,逆初始置换IP-1,E盒,S盒均在DES算法中予以说明,这里就不再赘述了。
算法流程
根据在上文中叙述的有关算法的运行原理及加解密流程,我们给出了其用C语言实现的源代码,相关的程序流程图如图3所示。由于三重DES算法的代码以单重DES算法为基础,除了中间需要一步逆向的解密过程外,其他均是DES的单重加密。所以我们这里仅给出单重DES的加密流程图。
图3
实验环境
Windows Server 2012 R2
实验工具在【C:\密码学课程\01密码学算法\04 分组密码\02 3DES密码算法】
打开文件【3DES.exe】,即可得到3DES加密算法的结果。如图4所示
图4
2.3DES核心密码算法
2.3DES核心密码算法
1 |
|
大概看了一下代码,也是使用des头文件中的函数进行加密,本实验也比较简单
AES实验
加密
解密
后面文件加密原理一样不再傻瓜式操作
实验思考
1.3DES算法与DES算法和AES算法有什么区别?
DES使用1条64位的密钥对数据进行一次加密。
3DES是DES加密算法的一种模式,它使用3条64位的密钥对数据进行三次加密。3DES是DES向AES过渡的加密算法(1999年,NIST将3-DES指定为过渡的加密标准),是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法。
AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高
AES算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。
AES使用几种不同的方法来执行排列和置换运算。AES是一个迭代的、对称密钥分组的密码,它可以使用128、192和256位密钥,并且用128位(16字节)分组加密和解密数据。
分组密码总结:与公共密钥加密使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据。
本文使用 CC BY-NC-SA 3.0 中国大陆 协议许可
具体请参见 知识共享协议
本文链接:https://zyhang8.github.io/2019/09/09/cipher-exp2/