一、实验目的及要求 1. 掌握DES算法的原理 2. 编写程序实现这个算法
二、实验设备(环境)及要求 PC机, VC++等 三、实验内容与步骤 1、DES算法(对代码中的主要内容进行分析讲解) 步骤: (1)先编写头文件DES.h,对DES所需的表(置换IP表、逆置换IP表、扩展置换表、单纯换位表、PC1选位表(密钥生成置换表1)、PC2选位表(密钥生成置换表2)、S盒等)进行定义。 (2)输入密钥,char型的密钥转化为Bit型的,接着根据头文件定义的PC1选位表(密钥生成置换表1)进行变换后,Key 的位数由64 位变成了56位,此56位分为C0、D0两部分,各28位,然后分别进行第1次循环左移,得到C1、D1,将C1(28位)、D1(28位)合并得到56位,再根据头文件定义的PC2选位表(密钥生成置换表2)进行变换,从而便得到了密钥K0(48位)。16次循环对应得到子密钥K0、K1……K15。 (3)接着将输入的明文先将char型的明文转化为Bit型的,接着根据头文件定义的置换IP表进行变换。 (4)经过初始置换后,64位的数据块分为两个32位的组,L0和R0。然后根据头文件定义的E位选择表(扩展置换表)进行扩展置换,将Ri-1从32位扩展到48位,接着,计算出48位的结果值与这一轮子密钥Ki的异或值。 (5)接着,需要通过8个单独的S盒执行8次替换操作, (6)根据P换位表(单纯换位表)进行换位。 (7)然后对第4-6循环16轮。 (8)最后根据逆置换IP-1表进行变换得出密文。
代码:
|
DES算法
最新推荐文章于 2022-11-17 21:53:21 发布
本文详细介绍了DES(Data Encryption Standard)加密算法的工作原理,包括其64位的块大小、56位的密钥长度、16轮的迭代过程以及Feistel结构。通过实例解析了密钥扩展和明文到密文的转换过程,探讨了DES的安全性和应用局限性,为读者提供了深入理解这一经典加密技术的视角。
摘要由CSDN通过智能技术生成