【vc++精品源码栏目提醒】:网学会员为需要vc++精品源码的朋友们搜集整理了DES算法和RC4算法实验任务 - 其它资料相关资料,希望对各位网友有所帮助!
实验任务 1本练习将主机 A 和 B 作为一组,主机 C 和 D 作为一组,主机 E 和 F 作为一组。
首先使用“快照 X”恢复 Windows 系统环境。
一.DES 加密解密 (1)本机进入“工具箱”|“加密解密”|“DES 加密算法”|“加密/解密”页签,在明文输入区输入明文:____________。
(2)在密钥窗口输入 8(64 位)个字符的密钥 k,密钥 k__________。
单击“加密”按钮,将密文导出到 DES 文件夹(D:WorkEncryptionDES)中,通告同组主机获取密文,并将密钥k 告诉同组主机。
(3)单击“导入”按钮,从同组主机的的 DES 共享文件夹中将密文导入,然后在密钥窗口输入被同组主机通告的密钥 k,点击“解密”按钮进行 DES 解密。
(4)将破解后的明文与同组主机记录的明文比较。
二.DES 算法 进入“工具箱”|“加密解密”|“DES 加密算法”|“演示”页签。
输入 64 位明文与密钥,执行加密操作,查看各演示模块。
在 DES 加密算法中,S-代替是最重要的部分,与其它代替比较起来,它提供了更好的安全性。
因此,掌握 S-盒代替是掌握 DES 算法的关键。
由于加密软件与加密硬件本身的特点有很大的差异,所以在实现 DES 加密算法时,加密软件与加密硬件采用的不同的策略。
加密硬件一般采取标准的 DES 加密算法实现,高加密效率是加密硬件的主要特点。
加密软件为了提高加密的效率,要遵守以下原则: 展开加密循环与函数; 避免内部循环中使用条件转移指令; 变量长度与 CPU 内部寄存器长度相同; 限制变量数量; 避免使用耗时的指令。
所以,加密软件在实现 DES 算法时,一般都对算法加以修改,以提高加密效率。
在工具箱的 DES 算法软件实现中,我们使用了一种修改的 DES 算法,它的 S-盒代替的输入为 64 位,而不是 48 位,这样可以在 32 位计算机上很好的执行。
S-盒代替的置换表如下: 置换表包含了 8 个 S 盒 S0-S7,每个 S 盒中有 64 个元素。
每个 S 盒由左至右,由上至下读取,64 个元素由 0 开始编号。
使用 SBoxxy代表第 x 个 S 盒的第 y 的元素。
例如,SBox100x80108020,代表第 1 个 S 盒的第 0 个元素,SBox79 0x10040000,代表第 7个 S 盒的第 9 个元素。
S 盒代替具体流程如下: (1)输入分成两部分,每部分 32 位,分别记为 S0 和 S1。
(2)将 32 位 S0 的第 25 至 30 位写入变量 S01; 将 32 位 S0 的第 17 至 22 位写入变量 S02; 将 32 位 S0 的第 9 至 14 位写入变量 S03; 将 32 位 S0 的第 1 至 6 位写入变量 S04。
(3)将 32 位 S1 的第 25 至 30 位写入变量 S11; 将 32 位 S1 的第 17 至 22 位写入变量 S12; 将 32 位 S1 的第 9 至 14 位写入变量 S13; 将 32 位 S1 的第 1 至 6 位写入变量 S14。
(4)查找置换表,将 SBox0S01、SBox1S11、SBox2S02、SBox3S12、SBox4S03、SBox5S13、SBox6S04、SBox7S14进行或运算,得到的结果即为 S盒的输出结果。
例如,64 位输入为 0x743DED2D02D3B264,那么 S 盒代替的过程如下: (1)64 位输入分为两部分,S0 0x743DED2D,S1 0x02D3B264。
(2)S01 0x34 5210 S02 0x3D 6110 S03 0x2D 4510 S04 0x2D 4510(3)S11 0x02 210 S12 0x13 1910 S13 0x32 5010 S14 0x24 3610(4)SBox052 0x01000004 SBox12 0x00008000 SBox261 0x00000008 SBox319 0x00802001 SBox445 0x00000100 SBox550 0x00000000 SBox645 0x00000802 SBox736 0x00000040将以上数据进行或操作,得到结果 0x0180A94F 就是 S 盒的输出。
了解了以上的 S 盒代替方法后,请写出输入为 0x843DED9302D3B98B 的 S 盒代替过程数据。
(1)S0 0x843DED93 ,S1 0x02D3B98B。
(2)S01 __________ __________ 10 S02 __________ __________ 10 S03 __________ __________ 10 S04 __________ __________10 (3)S11 __________ __________ 10 S12 __________ __________ 10 S13 __________ __________ 10 S14 __________ __________ 10 (4)SBox0 __ __________ SBox1 __ __________ SBox2 __ __________ SBox3 __ __________ SBox4 __ __________ SBox5 __ __________ SBox6 __ __________ SBox7 __ __________ 将以上数据进行或操作,得到结果__________就是 S 盒的输出。
三.源码应用(选做) 设计 DES 加密工具,利用 DES 加密算法对文件进行加密。
单击工具栏“VC6”按钮,启动 VC6.0。
选择“File”“Open Workspace…”加载工程文件“C:JLCSSProjectsEncryptDESDES.dsw”。
基于此工程进行程序设计。
任务 4一.RC4 加密解密 (1)本机进入“工具箱”|“加密解密”|“RC4 加密算法”|“加密”页签在明文输入区输入明文(明文不能超过 1024 个字符):_______________________。
(2)在密钥窗口输入密钥 k____________。
单击“加密”按钮,将密文导出到RC4 共享文件夹(D:WorkEncryption RC4 )中,通告同组主机获取密文,并将密钥 k 告诉同组主机。
(3)单击 “导入”按钮,从同组主机的 RC4 共享文件夹中将密文导入,然后在密钥窗口输入被同组主机通告的密钥 k,点击“解密”按钮进行 RC4 解密。
(4)将破解后的明文与同组主机记录的明文比较。
二.RC4 算法1.手动模拟 RC4 加密 (1)实例化一个含有 MODE 个元素的 S_Box(S)(这里假设 MODE9),步骤如下: MODE 初始为 9,j 初始为 0,i 初始为 0,将 S_Box 赋值为 0~MODE-1的一个序列; 将含有 MODE 个元素的 K_Box 使用密钥“abcde”序列循环填充; jS_Box 的第 i 个字节的值)(K_Box 的第 i 个字节的值) j)mod MODE; ; i0,1,…… MODE-1 ) 将 S_Boxj与 S_Boxi的值交换; i 加 1; i 是否等于 MODE,是则退出实例化结束操作,否则转至第 3 步; 实例化后的 S_Box 是: _________________________。
(2)利用(1)获得的 S_Box 按下面的方法加密 “Hello RC4”。
加密方法: 初始化 ij0;MODE9送入明文数据存入 Buf长度 Len; ii1 mod MODEjjS_Boxi mod MODE; 交换 S_BoxiS_Boxj; k(S_Boxi S_Boxj)mod MODE; RS_Boxk; 密文 i 等于 Bufi异或 R 的值; i 自加 1; i 是否小于 Len,否完成加密并退出,是转至第二步。
加密后的密文数字序列是:________________________。
2.验证 进入“工具箱”|“加密解密”|“RC4 加密算法”|“RC4 演示”页签 将 S-Box 元素个数调整为 9,明文中填入“Hello RC4”,密钥中填入“abcde”,执行加密操作,查看各演示模块,验证手动计算结果。
三.源码应用(选做) 设计 RC4 加密工具,利用 RC4 加密算法对文件进行加密。
单 击 工 具 栏 “VC6” 按 钮 , 启 动 VC6.0 。
选 择 “File”“Open Workspace…”加 载 工 程 文 件“C:JLCSSProjectsEncryptRC4RC4.dsw”。
基于此工程进行程序设计。
上一篇:
C++ODBC和ADO方式连接SQL数据库
下一篇:
澳洲硕士课程作业Community