基于c的文档加密器的实现—免费计算机毕业设计论文内容摘要:
, R0 则是换位输出后的两部分, L0 是输出的左 32 位, R0 是右 32位。 例:设置换前 的输入值为 D1D2D3„D64 ,则经过初始置换后的结果为:L0=D58D50„D8 ; R0=D57D49„7。 ( 2) 逆置换 经过 16次迭代运算后,得到 L16, R16,将此作为输入进行逆置换,即得到密文输出。 逆置换正好是初始置换的逆运算。 例如,第 1 位经过初始置换后,处于第 40位,而通过逆置 换,又将第 40位换回到第 1位,其逆置换的规则如表 2所示。 表 2逆置换 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 ( 1) 函数 f(Ri, Ki)的计算 其算法描述如图 1所示。 图 1 算法描述 在图 1中, “ 扩展置换 ” 是将 32 位放大成 48位, “P 盒置换 ” 是 32位到 32 位换位,其换位 规则分别 如表 表 4所示。 表 3扩展置换表 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 表 4 P盒置换表 16, 7, 20, 21, 29, 12, 28, 17, 1, 15, 23, 16, 23, 26, 5, 18, 31, 10, 2, 8, 24, 14, 32, 27, 3, 9, 19, 13 , 30, 6, 22, 11, 4, 25 在( Ri, Ki) 算法描述图中, S1, S2, „ , S8 为选择函数,其功能是把 6 b 数 据变为 4 b 数据。 下面以选择函数 S1 为例说明其功能。 其选择函数 S1的功能表如表 5 所 示。 表 5选择函数 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 通过表 5 可以看到,在 S1 中共有 4 行数据,分别命名为 0, 1, 2, 3 行,每行有16列,分 别命名为 0, 1, 2, 3, „ , 14, 15 列。 现设输入为: D=D1D2D3D4D5D6 令:列 =D2D3D4D5,行 =D1D6 然后在 S1 表中查得对应的数,以 4位二进制表示,此即为选择函数 S1 的输出。 (4)子密钥 Ki(48 b)的生成算法 开始,由于不考虑每个字节的第 8 位, DES 的密钥从 64位变为 48 位,如表 6所示,首先 56 位 密钥被分成两个部分,每部分 28 位,然后根据轮数,两部分分别循环左移l或 2位。 表 6 密钥置换 57, 49, 41, 32, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4 DES 算法规定,其中第 8, 16, „ , 64 位是奇偶校验位,不参与 DES 运算。 故 Key实际可用 位数只有 56 位。 即:经过密钥置换表的变换后, Key 的位数由 64 位变成了56 位,此 56 位分为 C 0, D0 两部分,各 28 位,然后分别进行第一次循环左移,得到C1, D1,将 C1(28 位 ), D1(28 位 )合并得到 56 位,再经过压缩置换,从而便得到了密钥 K0(48 位 )。 依次类推,便可得到 K1, K 2, „ , K15。 需要注意的是, 16 次循环左移对应的左移位数要依据表 7所示的规则进行。 以上介绍了 DES 算法的加密过程。 DES 算法的解密过程是一样的,区别仅在于第一次迭代 时用子密钥 K15,第二次是 K14, „ ,最后一次用 K0,算法本 身并没有任何变化。 表 7循环左移位数 轮 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 位数 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2 , 2, 2, 1 算法的编程实现 (一) int des(char *data, char *key, int readlen) 参数 : (长度为 readlen, 可能经过填充。 (8 字节的倍数 ) 功能 : 生成加密密钥 , 把待加密的明文数据分割成 64 位的块 , 逐块完成 16次迭代加密 ,密文存放 data 所指向的内存中。 (二) int Ddes(char *data, char *key, int readlen) 参数 : (长度为 readlen, 可能经过填充。 ( 8 字节的倍数 ) 功能 : 生成解密密钥 , 把待解密文分割成 64 位的块 , 逐块完成 16次迭代解密 , 解密后的明文存放在 data 所指向的内存中。 (三) int des3(char *data, char *key, int n , int readlen) 参数 : (长度为 readlen, 可能经过填充。 (8 字节的倍数 ) 功能 : 生成加密密钥 , 把待加密的明文分割成 64 位的块 , 把第 i1 层加密后的密文作为第 i 层 的明文输入 , 根据用户指定的加密层数进行 n 层加密 , 最终生成的密文存放在data 所指向 内存中。 说明 : 用户仅仅输入一条密钥 , 所有的加密密钥都是由这条密钥生成 . (四) int Ddes3(char *data, char*key, int n , int readlen) 参数 : (长度为 readlen, 可能经过填充。 (8 字节的倍数 ) 功能 : 生成解密密钥 , 把待解密文分割成 64 位的块 , 把第 i1 层解密后的 明文 作为第i层解密 密文输入 , 根据用户指定的解密层数进行 n层解密 , 最终生成的明文存放在 data所指向 内存中。 说明 : 用户仅仅输入一条密钥 , 所有的解密密钥都是由这条密钥生成 . (五) int desN(char*data, char*key, int n_key, int readlen) 参数 : (长度为 readlen, 可能经过填充。 (8 字节的倍数 ) 功能 : 生成加密密钥 , 把待加密的明文分割成 64 位的块 , 把第 i1 层加密后的密文作为第 i 层加密的明文输入 , 根据用户指定的加密层数进行 n 层加密 , 最终生成的密文存放在 data 所指向的内存中。 说明 : 这里用户通过输入的密钥条数决 定加密的层数 , 每轮 16 次迭代加密所使用的加密密钥是由用户自定的对应密钥生成。 (六) int DdesN(char *data, char *key, int n_key, int readlen) 参数 : (长度为 readlen, 可能经过填充。 (8 字节的倍数 ) 功能 : 生成解密密钥 , 把待解密文分割成 64 位的块 , 把第 i1 层解密后的”明文”作为第 i 层解 的密文输入 , 根据用户指定的解密层数进行 n层解密 , 最终生成 的明文存放在data 所指向的内存中。 说明 : 这里用户通过输入的密钥条数决定解密的层数 , 每轮 16 次迭代加密所使用的解密密钥是由用户自定的对应。 DES 算法的应用误区及避开方法 DES 算法具有极高的安全性,到目前为止,除了用穷举搜索法对 DES 算法进行攻击外,还没有发现更有效的办法。 而 56 位长的密钥的穷举空间为 256,这意味着如果一台计算机的速度 是每秒检测一百万个密钥,则他搜索完全部密钥就需要将近 2 285 年的时间,可见这是难以实现的。 当然,随着科学技术的发展,当出现超高速计算机后,可以考虑把 DES 密 钥的长度再增长一些,以此来达到更高的保密程度。 由上述 DES 算法介绍可以看到, DES 算法中只用到 64 位密钥中的其中 56位,而第8, 16, 24, „ , 64 位 8个位并未参与 DES 运算,这一点,提出了一个应用上的要求,即 DES 的安全性是基于除了 8, 16, 24, „ , 64 位外的其余 56位的组合变化才得以保证的。 因此 ,在实际应用中,应避开使用第 8, 16, 24, „ , 64 位作为 DES 密钥的有效数据位,才能保 证 DES 算法安全可靠。 对运用 DES 来达到保密作用的系统产生数据被破译的危险,这正是 DES 算法在应用上的误区。 避开 DES算法应用误区的具体操作:在 DES 密钥 Key 的使用、管理及密钥更换的过程中,应 绝 对避开 DES 算法的应用误区,即绝对不能把 Key 的第 8, 16, 24, „ , 64位作为有效数据位 来对 Key 进行管理,这一点,对应用 DES 加密的用户来说要高度重视。 有些网络, 利用定期更换 DES 密钥 Key 的办法来进一步提高系统的安全性和可靠性,如果忽略了上述应用 误区,那么,更换新密钥将是徒劳的,对网络的安全运行将十分危险,所以更换密钥一 定要保证新 Key 与旧 Key 真正的不同,即除了第 8, 16,24, „ , 64位以外其他位 数据发生 了变化,这一点是非常重要的。 目前 加密算法 已被广泛的应用,随着信息化和数字化社会的发展,随着计算机Inter 的普及,密码学必将在国家安全、经济交流、网络安全及人民生活等方面发挥更大作用。 3 软件设计与实现 本软件设计和实现的功能主要有两个方面,一是对文件的加密,二是对加密的文件的解密工作。 还附带了用户自己设定文件密码,密码验证和各个操作的正确性的提示。 所以将加密器分为 2 个子模块: 1 文件加密, 2 文件解密。 加密功能待完成网络方面数据流加密 节点加密和节点解密。 对数据打包封装在网络上进行密文传 输。 局部文本加密替换功能 也是一个研究的方面。 密钥的分配和更改需要通过必要的渠道进行传输,密钥的管理也关系到整个加密文件的安全因数。 程序结构图 图 2 程序结构图 关键代码的设计 为 加密控件 按钮添加事件处理程序,这段程序的功能是将选定的文件加密 , 获得待加密文件名 、 获得保存文件名 、 创建文件流分别指向输入和输出文件 , 根据密码算出密钥并保存到选定的文件中去,代码如下 : private void encode_Click(object sender, EventArgs e) {//获得待加密文件名 string inName =。 //获得保存文件名 string outName =。 byte[] desIV = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 }。 byte[] desKey ={ }。 //根据密码算出密钥 string keyString =。 if ( = 8) { DES 加密 文档 加密 文档 解密 选择加密对话框 选择保存对话框 设置密码 确认密码 选择加密。基于c的文档加密器的实现—免费计算机毕业设计论文
相关推荐
)()14c os ()12c os ( nRN nN nw NBl ( 3- 9) Blw 为 此窗的幅度函数,其展开后由 5 部分组成,这几部分频率响应的 相位和幅度都不同,使得旁瓣进一步抵消。 阻带衰减进一步增加,过渡带是 N/12。 ⑤ 凯塞 — 贝塞尔窗 其表达式非常复杂,一般在 matlab 中生成其系数。 ( 3)几 种窗函数的性能比较
1) 查看教师所教的所有课程 2) 上传作业以及相应作业参考答案,可以选择定时发布作业 3) 下载发布的作业及答案 4) 删除、修改已发布的作业,删除时可连带删除相关信息 5) 查看作业批改情况,下载学生作业,批改学生所上传的作业 6) 查看作业提交情况 7) 查询学生成绩,修改学生成绩 ( 2)学生的主要功能需求: 1) 查看教师发布的作业 2) 查看自己所选课程 3) 查看自己完成作业的情况
els (Model 2, Struts, and JSF) by building three versions of an online store application using each of the three design models, respectively. 1. Introduction Today, Web applications are the most mon
欧姆左右, 在 电流约 于 200mA 即可 启动 , 所以 在继电器线圈上串联 100 欧姆的限流电阻 ,目的 是 为 防止继电器吸合时,线圈发热。 二极管 1N1007 的作用是保护晶体管。 当继电器吸合时,二极管截止,不影响电路工作。 继电器释放时,由于继电器线圈存在电感, 这时 晶体管已经截止,所以会在线圈的两端产生较高的感应电压。 这个电压 的极性是上负下正,正端接在晶体管的发射机。
unit circuit . Serial Communication Interface Circuit D Serial Communication Interface Circuit PC and SCM are linked via a serial munication interface. In order to implement serial munication
添加、删除和修改用户模板 系统管理功能列表 1 系统模板管理 添加、删除和修改系统模板 2 管理用户 修改用户信息和密码 添加和删除用户 3 系统参数设置 设置系统的一些名称和数据 4 数据库管理 数据库的备份和还原 有了这些功能明细后,我们 就把整个系统的框架确定下来了,也就确定了系统数据的基本结构。 系统功能需求分析 创建用例图 系统管理员,参与了管理博客账号、登陆、修改密码 3个用例。