当前位置:首页>科技 >内容

des加密算法的简单实现_des加密算法及原理详细解释

2024-05-23 12:41:50科技漂亮的斑马

des算法简介DES算法是密码体制中的一种对称密码体制,也称为美国数据加密标准,是IBM于1972年开发的对称密码体制加密算法。明文按64位分组

des加密算法的简单实现_des加密算法及原理详细解释

des算法简介DES算法是密码体制中的一种对称密码体制,也称为美国数据加密标准,是IBM于1972年开发的对称密码体制加密算法。明文按64位分组,密钥长64位。其实关键是56位参与DES运算(编号8、16、24、32、40,48、56、0

des算法的基本原理有三个入口参数:密钥、数据和模式。Key是用于加密和解密的密钥,data是加密和解密的数据,mode是其工作模式。当模式为加密模式时,明文按64位分组,形成明文组。密钥用于加密数据,当模式为解密模式时,密钥用于解密数据。在实际应用中,该密钥仅使用64位中的56位,因此具有较高的安全性。

Des算法的特点是分组短,密钥短,密码生命周期短,运算速度慢。

Des算法流程DES算法把一个64位的明文输入块变成64位的密文输出块,它使用的密钥也是64位。整个算法流程图如下:

DES算法细节DES算法把一个64位的明文输入块变成64位的密文输出块,它使用的密钥也是64位。它的作用是将输入的64位数据块逐位重组,将输出分成L0和R0两部分,每部分长度为32位。其替换规则见下表:

58,50,12,34,26,18,10,2,60,52,44,36,28,20,12,4,

62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8,

57,49,41,33,25,17, 9,1,59,51,43,35,27,19,11,3,

61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7,

即,将第58位更改为第一位,将第50位更改为第二位。以此类推,最后一个是原七。L0和R0是转置输出的两部分,其中L0是输出的左32位,R0是右32位。例如,将移调前的输入值设置为D1D2D3。 d64,初始替换后的结果是:L0=D550。 D8;R0=D57D49。 D7 .

经过26次迭代。L1:得到6、R16,作为输入,通过逆置换得到密文的输出。逆排列就是初始排列的逆运算。例如,第1位在初始置换后的第40位,第40位通过逆置换变回第1位。逆置换规则如下表所示:

40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31,

38,6,46,14,54,22,62,30,37,5,45,13,53,21,61,29,

36,4,44,12,52,20,60,28,35,3,43,11,51,19,59,27,

34,2,42,10,50,18,58 26,33,1,41, 9,49,17,57,25,

放大转置表

32, 1, 2, 3, 4, 5, 4, 5, 6, 7, 8, 9, 8, 9, 10,11,

12,13,12,13,14,15,16,17,16,17,18,19,20,21,20,21,

22,23,24,25,24,25,26,27,28,29,28,29,30,31,32, 1,

简单转置表

16,7,20,21,29,12,28,17, 1,15,23,26, 5,18,31,10,

2,8,24,14,32,27, 3, 9,19,13,30, 6,22,11, 4,25,

在S2 S1的f(Ri,Ki)算法描述图中。 s8是选择功能,其功能是将6位数据变为4位数据。选择函数Si(i=1,2。 8)菜单:

选择功能Si

S1:

14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7,

0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8,

4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0,

15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13,

S2:

15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10,

3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5,

0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15,

13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9,

S3:

10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8,

13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1,

13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7,

1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12,

S4:

7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15,

13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9,

10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4,

3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14,

S5:

2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9,

14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6,

4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14,

11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3,

S6:

12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11,

10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8,

9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6,

4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13,

S7:

4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1,

13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6,

1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2,

6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12,

S8:

13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7,

1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2,

7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8,

2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11,

以S1为例说明其作用,我们可以看到S1有四行数据,命名为0,1、2、3;每行有16列,命名为0,1、2、3。第1列4、15。

现在输入是:d=d1d2d3d4d6。

Order: column==D2D3D4D5

Line==D1D6

然后在S1表中查找对应的数字,用4位二进制表示,这是选择函数S1的输出。生成子密钥Ki(48位)的算法如下所示。

从子密钥Ki的生成算法描述图中可以看出,初始密钥值是64位,但DES算法规定的数字是8、16、。 64位是奇偶校验位,不参与DES运算。因此,Key的实际可用位数只有56位。也就是说,在缩小选择转置表1的变换之后,密钥的比特数从64变为56,并且56比特被分成C0和D0,每个具有28比特。然后第一个循环左移得到C1、D1,C1(28位)和D1(28位)组合得到56位,再缩小转置2,如此等等,就可以得到K1、K2、。K15,但需要注意的是,16个循环左移对应的左移位数要按以下规则进行:

循环左移数字

1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1

上面介绍了DES算法的加密过程。DES算法的解密过程是一样的,唯一不同的是第一次迭代使用子密钥K15,第二次迭代使用K14、。上次用K0,算法本身没变。

DES算法具有极高的安全性。到目前为止,除了穷举搜索法攻击DES算法之外,还没有找到更有效的方法。但是56位密钥的穷举空间是256,这意味着如果一台计算机每秒检测一百万个密钥,则需要将近2285年才能搜索完所有的密钥。显然,这是很难实现的。当然,随着科技的发展,当超高速计算机出现时,我们可以考虑增加DES密钥的长度,以达到更高的保密程度。

从上面DES算法的介绍中我们可以看到,DES算法中使用的64位密钥只有56位,编号8、16、24、。0.64位和8位不参与DES运算,这就给我们提出了一个应用要求,即DES的安全性是建立在8,16,24,保证了除. 64位之外的剩余56位的组合变化256。因此,在实际应用中,应避免使用8、16、24、只有. 64位作为有效数据位,其余56位作为有效数据位,DES算法才能安全可靠地工作。如果你不知道这一点,把8,16,24,的关键关键。使用. 64位作为有效数据不会保证DES加密数据的安全性,而且会导致数据在使用DES实现保密的系统中被破译的危险。这是DES算法在应用中的误区,是技术人员和各级领导在使用过程中绝对要避免的。然而,使用DES并掌握DES工作密钥的财务和非财务部门的领导和主管很容易被忽视,留下一个看似安全的系统在使用。

DES算法应用误区的验证数据

作者用Turbo C编写了DES算法程序,在PC上应用DES算法时出现了错误。验证数据如下:

密钥:0x300x300x300x30。0x30 (8字节)

数据:0x310x310x310x31。0x31 (8字节)

模式:加密

结果:65 5e a6 28 cf 62 58 5f

如果上面的密钥换成8字节的0x31,数据和模式都不变,DES执行后得到的密文是完全一样的。同样,数据(80x31)用Key:80x32和Key:80x33加密,它们的图形输出是一样的:5c3ace953 713ba。

我们可以得出这样的结论:

对密钥使用0x30与使用0x31相同;

使用0x32作为密钥与使用0x33是一样的。

键从80x32换成80x31的时候,好像换了一个新键,但是0x30和0x31只在第8,16,24。 64,而DES算法不使用第8、16、 64位作为密钥的有效数据位,所以加密结果是一样的。

DES解密的验证数据:

密钥:0x310x31。0x31 (8个0x31)

数据:65 5e a6 28 cf 62 58 5f

模式:解密

结果:0x310x31。0x31 (8个0x31)

从上面可以看出,DES算法的加密和解密都是正确的。唯一需要避免的是:在应用中,避免使用8、16键。0.64位作为有效数据位,从而避免了DES算法在应用中的误区。

避免DES算法应用误区的具体操作

在使用、管理和更改DES密钥的过程中,绝对要避免DES算法的应用误区,就是绝对不能把第8、16、24个密钥。 64位用作管理密钥的有效数据位。这一点特别推荐给金融银行业和非金融行业的领导和决策者,尤其是负责管理钥匙的人,要高度重视这一点。一些银行金融交易网络采用定期更换DES密钥的方法,进一步提高系统的安全性和可靠性。如果忽略以上应用误区,更换新钥匙将是徒劳的,对金融交易网络的安全运行将是非常危险的。所以换调一定要保证新调和旧调真的不一样,也就是除了8、16、24调。除了. 64位其他位的数据都有变化,请大家高度重视!

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *.

上面两个数字只是改变了密钥中的数字8、16、24、36、48、56、64,验证加密的密文是一样的!

声明本站所有作品图文均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系我们

Top