基于DES算法的文件加密系统的设计与实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
加密过程 : (1) 对 64 位明文分组进行初始置换产生一个 64 比特的输出 X0=L0R0 ; (2) 对 X0 进行 16 轮重复的依赖于密钥的置换 运算,它包含一个加密函数 f 和一个密钥生成函 数,由密钥生成函数生成子密钥 k1, k2 k16, 我们 用每一轮的 X i= L iR i(1 ≤ i ≤ 16) 来表示每一轮的
2012.07 14
computer 学 术 . 技 术s e c u r i t y
选择 dialogbased,其他按默认处理,按下一步, 直到完成,形成如图 8 所示界面。
图 5 循环运算流程图
8 轮循环得到的结果就是所需的密文,最后将 密文进行还原调整即逆变换,存入到指针指向的数 据单元中,指针向下移 8 位,指向下一个数据单 元, 重 复 以 上 操 作, 直 到 输 入 明 文 的 所 有 数 据 块 转为 DES 密文,将密文输入到变量 m_C 中,调用 函数 CStringToUnsignedChar(m_PlainText,p);, UnsignedCharToBinary(p,block, m_C); 将密文 以二进制码的形式显示。
本书主要系统地介绍了网 球安全的基本原理和基本应
用。全书主要分理论篇和试验篇,共 19 章,主要包括 引论、对称密码、公钥密码、安全协议、操作系统安全、 多媒体信息安全、防火墙、入侵检测、病毒原理与防范、 数据库安全技术、无限网络安全等网络安全原理,以及 Windows Server 服务器安全配置试验、Web 检测试验、密 码试验、系统扫描试验、网络监控与嗅探试验、破译与 攻击试验、防火墙试验和入侵检测试验等网络安全实验 与应用。
3 用 VC++ 实现一个简单的文件加密系统
创建应用程序框架 : (1) 在 File 菜单上,单击 New 菜单项,弹出图 6 所示的对话框。
图 8 已创新工程大体框架
(2) 根据所要实现的效果设计界面,将所需的控 键拖入对话框中,并设定相应的属性。
我们所需实现的功能是 :(1) 读入明文,输入 密钥,加密,显示密文,输出密文 ;(2) 读入密文, 输入密钥,解密,显示明文,输出明文。
computer s e c u r i t y学 术 . 技 术
2 用 VC++ 编程实现 DES 加解密
2.1 密钥生成函数和核心加密函数的实现方式 initKey(); 为子密钥生成函数,函数框图如图 1
所示 。 [3]
图 1 密钥生成函数流程图
调整方式 : (1) 如图 3 所示,将原本 48 位的密钥划分成 8 个 6 位的密钥。
输入输出文件路径
m_Key
输入密钥
m_Original 输出原文
பைடு நூலகம்
m_PlainText 输入明文
(4) 为 了 实 现 程 序 的 功 能, 还 需 要 为 控 件 的
事件进行映射,按 C t r l + W 键启动类向导,选择
Message Maps 标签,为控件添加消息响应函数,
如表 3 所示。
以上操作的效果是 :输入明文的 7,57,49,41,33,25 33,25,17, 9,1,591,59,51 ,43,35,2735,27,19,11,3,61 3,61,53,45,37,29 37,29,21,13,5,635,63,55 ,47,39,3139,31,23,15,7,57 与密钥的 (1)(3)(5)(7)(2)(4)(6)(8) 异或,等效于 明文 : 7,57,49,41,33,25 33,25,17,9,1,59 1,59,51,43,35,27 35,27,19,11,3,61 3,61,53,45,37,29 37,29,21,13,5,63 5,63,55,47,39,31 39,31,23,15,7,57 共 48 位,正好是原 32 位明文 : 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, 扩 展 为 48 位 与 48 位 的 子 密 钥 进 行 异 或。 将 异或结果通过 S P 盒存到 f v a l 中,f v a l 结果即为 f(R0,k1)。根据 16 轮迭代的公式 Li=Ri-1, Ri=Li-1 足 f(Ri-1,Ki) 1 ≤ i ≤ 16 可转化为 Li+1=Ri= Li-1 足 f(Ri-1,Ki) Ri+1=Li 足 f(Ri,Ki+1)= Ri-1 足 f(Ri,Ki+1) 即将 16 轮循环转为 8 轮循环,流程图如图 5 所 示。
computer s e c u r i t y学 术 . 技 术
普遍性,这里就不多介绍。 用 MFC 所实现的系统如图 10 所示界面。
其 中 设 置 I D C _ K 时, 设 置 M a x i m u m
Character 为 8, 即密钥长度为 8
各变量含义 :m_C 密文
m_sfile
An Improvement Method to Implement the DES(Data Encryption Standard) Encryption Algorithm ZHOU Wen-ting,MA Feng-wei,KONG Qing
(Jining Institute of Technology, Jining, Shandong 272000,China) Abstract: The DES(Data Encryption Standard) encryption algorithm is one kind of block cipher, which is safer by using two technologies: substitution or transposition of the encrypt blocks repeatedly, get the ciphertext after 16 times of transformation, but the key and the life cycle are too short, computing speed is too slow. In this paper, the theory of the DES encryption is introduced first, then by the improvement of the "Extended Operations E", "S-box & P-box computing”, as well as the 16 times iterative process, DES encryption algorithm computing speed has been greatly improved. Key words: DES encryption algorithm;improvement;Extended Operations E;S-box & P-box computing
图 2 密钥结构图
(2) 将 48 位的密钥按如下方式存放在两个长整 型数据单元,也就是 8 个字节中。每个字节中存放 6 位密钥。
图 3 密钥存储方式图
第一个长整型数据中存放 1,3,5,7 部分,第 二个长整型数据中存放 2,4,6,8 部分。如此循 环操作,将 16 个子密钥存放到 32 个长整型数据中。
des_enc( &dc, (unsigned char *)p, block ) ; 是 加 密 算 法 的 核 心 部 分, 其 中 & d c 为 密 钥, (unsigned char *)p 为待加密的明文,block 为函 数块数,每一块为 64 位。
函数框图如图 4 所示。
图 4 DES 加密函数流程图
图 10 系统界面
经过测试,该文件加密系统所实现的功能符合 要求。
4 结论
本文首先简要介绍了 DES 算法的原理和流程, 分析设计了用 VC++ 实现 DES 加解密的核心算法, 在此基础上制作完成了一个文件加密系统,通过测 试验证该加密系统所实现的功能符合要求。
参考文献 [1] 张福泰等 , 密码学教程 [ M ] , 武汉 :武汉大学出版社 , 2006. [2] 李联 , 信息安全中的 DES 加密算法 [J], 现代电子技术 , 2005, 9(2):207-211. [3] 胡长年 , DES 加密技术及 VC++ 的程序实现 [J], 化工时 刊 , 2004, 18(8):121-125.
作者简介 :周文婷 (1983 - ),女,硕士,助教,主要从事 机电一体化方向研究。 收稿日期 :2012-06-06
《网络安全原理与应用》 作 者 :陈志德 , 许力 出 版 社 :电子工业出版社 出版时间 :2012-06 I S B N :9787121171901 内容简介 :
因此,需要的对话框控件设计及属性如表 1 所 示。
表 1 对话框控件设计及属性
图 6 New 菜单命令的弹出对话框
选择 MFC APPVZARD,输入 project name 和 location,单击 ok 出现以图 7 所示对话框。
(3) 使对话框控件与变量关联。按 Ctrl+W 键运 行类向导 :
0 引言
随着互联网的普及,人们越来越多地使用计算 机网络来传递安全敏感信息,如网上银行业务、商 业数据交换、网上交易电子支付系统等,信息安全 的重要保障方法——“数据加密”逐渐成为备受关 注的热点问题。D E S 算法,全称为数据加密标准, 是一种对二元数据进行加密的算法,通过反复使用 加密组块替代和换位两种技术,经过 16 轮的变换 后得到密文,安全性高,属于分组密码算法中最有 名的两种常规密码算法之一。目前在国内,DES 算 法在 P O S、A T M、磁卡及智能卡(I C 卡)、加油 站、高速公路收费站等领域被广泛应用,以此来实 现关键数据的保密,如信用卡持卡人的 PIN 的加密 传输,I C 卡与 P O S 间的双向认证、金融交易数据
computer 学 术 . 技 术s e c u r i t y
基于 DES 算法的文件加密系统的设计与实现
周文婷,马凤伟,孔 庆
( 济宁职业技术学院,山东 济宁 272000)
摘 要 :随着互联网的普及,信息安全问题逐渐成为热点问题。DES 算法,全称为数据加密标准,是一种对二元数据进行加密 的算法,通过反复使用加密组块替代和换位两种技术,经过 16 轮的变换后得到密文,安全性高,在 POS、ATM、磁卡及智能卡(IC 卡)、加油站、高速公路收费站等领域被广泛应用。首先简要介绍了 D E S 算法的原理和流程,分析设计了用 V C + + 实现 D E S 加 解密的核心算法,在此基础上制作完成了一个文件加密系统。 关键词 :DES 算法 ;文件加密系统 ;VC++
表 3 为控件映射消息
目 前 为 止, 所 需 要 的 对 话 已 基 本 完 成, 接 下 来只需为响应函数添加代码并添加必要的其他函 数实现所需的功能,其中核心算法是 O n E n c B ( ), OnDecB(),只需根据上面介绍的算法原理调用相应 的函数即可。
由于其他响应函数的实现方法较简单,且具有
包的 MAC 校验等,均用到 DES 算法 。 [1]
1 DES 算法的基本原理
D E S 加 密 算 法 描 述 [2] :D E S 是 一 个 16 轮 的 F e i s t e l 型结构密码,其中分组长度为 64 位,密钥 长度为 64 位(实用 56 位),密文分组长度也为 64 位。
基金项目 :国家“星火”计划(2011GA74038)资助项目。
2012.07 13
输出 Li=Ri-1,Ri=Li-1 足 f (Ri-1,K),经过 16 轮运 算,得到 X16=L16R16 ;
(3) 对 X16 进行逆变换,得 64 比特密文 ; (4) 最后进行逆变换得出密文。 加密和解密采用相同的密钥,因而它属于对称 密码体制。
图 7 MFC AppWizard-Step1 对话框
2012.07 15
图 9 ClassWizard 对话框
并选择 Member Variables 属性页,然后选择 欲添加变量的控件并单击 Add Variables 按钮,在
弹出对话框中按如下表设置变量名及其类型。
表 2 控件对应的成员变量表
2012.07 14
computer 学 术 . 技 术s e c u r i t y
选择 dialogbased,其他按默认处理,按下一步, 直到完成,形成如图 8 所示界面。
图 5 循环运算流程图
8 轮循环得到的结果就是所需的密文,最后将 密文进行还原调整即逆变换,存入到指针指向的数 据单元中,指针向下移 8 位,指向下一个数据单 元, 重 复 以 上 操 作, 直 到 输 入 明 文 的 所 有 数 据 块 转为 DES 密文,将密文输入到变量 m_C 中,调用 函数 CStringToUnsignedChar(m_PlainText,p);, UnsignedCharToBinary(p,block, m_C); 将密文 以二进制码的形式显示。
本书主要系统地介绍了网 球安全的基本原理和基本应
用。全书主要分理论篇和试验篇,共 19 章,主要包括 引论、对称密码、公钥密码、安全协议、操作系统安全、 多媒体信息安全、防火墙、入侵检测、病毒原理与防范、 数据库安全技术、无限网络安全等网络安全原理,以及 Windows Server 服务器安全配置试验、Web 检测试验、密 码试验、系统扫描试验、网络监控与嗅探试验、破译与 攻击试验、防火墙试验和入侵检测试验等网络安全实验 与应用。
3 用 VC++ 实现一个简单的文件加密系统
创建应用程序框架 : (1) 在 File 菜单上,单击 New 菜单项,弹出图 6 所示的对话框。
图 8 已创新工程大体框架
(2) 根据所要实现的效果设计界面,将所需的控 键拖入对话框中,并设定相应的属性。
我们所需实现的功能是 :(1) 读入明文,输入 密钥,加密,显示密文,输出密文 ;(2) 读入密文, 输入密钥,解密,显示明文,输出明文。
computer s e c u r i t y学 术 . 技 术
2 用 VC++ 编程实现 DES 加解密
2.1 密钥生成函数和核心加密函数的实现方式 initKey(); 为子密钥生成函数,函数框图如图 1
所示 。 [3]
图 1 密钥生成函数流程图
调整方式 : (1) 如图 3 所示,将原本 48 位的密钥划分成 8 个 6 位的密钥。
输入输出文件路径
m_Key
输入密钥
m_Original 输出原文
பைடு நூலகம்
m_PlainText 输入明文
(4) 为 了 实 现 程 序 的 功 能, 还 需 要 为 控 件 的
事件进行映射,按 C t r l + W 键启动类向导,选择
Message Maps 标签,为控件添加消息响应函数,
如表 3 所示。
以上操作的效果是 :输入明文的 7,57,49,41,33,25 33,25,17, 9,1,591,59,51 ,43,35,2735,27,19,11,3,61 3,61,53,45,37,29 37,29,21,13,5,635,63,55 ,47,39,3139,31,23,15,7,57 与密钥的 (1)(3)(5)(7)(2)(4)(6)(8) 异或,等效于 明文 : 7,57,49,41,33,25 33,25,17,9,1,59 1,59,51,43,35,27 35,27,19,11,3,61 3,61,53,45,37,29 37,29,21,13,5,63 5,63,55,47,39,31 39,31,23,15,7,57 共 48 位,正好是原 32 位明文 : 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, 扩 展 为 48 位 与 48 位 的 子 密 钥 进 行 异 或。 将 异或结果通过 S P 盒存到 f v a l 中,f v a l 结果即为 f(R0,k1)。根据 16 轮迭代的公式 Li=Ri-1, Ri=Li-1 足 f(Ri-1,Ki) 1 ≤ i ≤ 16 可转化为 Li+1=Ri= Li-1 足 f(Ri-1,Ki) Ri+1=Li 足 f(Ri,Ki+1)= Ri-1 足 f(Ri,Ki+1) 即将 16 轮循环转为 8 轮循环,流程图如图 5 所 示。
computer s e c u r i t y学 术 . 技 术
普遍性,这里就不多介绍。 用 MFC 所实现的系统如图 10 所示界面。
其 中 设 置 I D C _ K 时, 设 置 M a x i m u m
Character 为 8, 即密钥长度为 8
各变量含义 :m_C 密文
m_sfile
An Improvement Method to Implement the DES(Data Encryption Standard) Encryption Algorithm ZHOU Wen-ting,MA Feng-wei,KONG Qing
(Jining Institute of Technology, Jining, Shandong 272000,China) Abstract: The DES(Data Encryption Standard) encryption algorithm is one kind of block cipher, which is safer by using two technologies: substitution or transposition of the encrypt blocks repeatedly, get the ciphertext after 16 times of transformation, but the key and the life cycle are too short, computing speed is too slow. In this paper, the theory of the DES encryption is introduced first, then by the improvement of the "Extended Operations E", "S-box & P-box computing”, as well as the 16 times iterative process, DES encryption algorithm computing speed has been greatly improved. Key words: DES encryption algorithm;improvement;Extended Operations E;S-box & P-box computing
图 2 密钥结构图
(2) 将 48 位的密钥按如下方式存放在两个长整 型数据单元,也就是 8 个字节中。每个字节中存放 6 位密钥。
图 3 密钥存储方式图
第一个长整型数据中存放 1,3,5,7 部分,第 二个长整型数据中存放 2,4,6,8 部分。如此循 环操作,将 16 个子密钥存放到 32 个长整型数据中。
des_enc( &dc, (unsigned char *)p, block ) ; 是 加 密 算 法 的 核 心 部 分, 其 中 & d c 为 密 钥, (unsigned char *)p 为待加密的明文,block 为函 数块数,每一块为 64 位。
函数框图如图 4 所示。
图 4 DES 加密函数流程图
图 10 系统界面
经过测试,该文件加密系统所实现的功能符合 要求。
4 结论
本文首先简要介绍了 DES 算法的原理和流程, 分析设计了用 VC++ 实现 DES 加解密的核心算法, 在此基础上制作完成了一个文件加密系统,通过测 试验证该加密系统所实现的功能符合要求。
参考文献 [1] 张福泰等 , 密码学教程 [ M ] , 武汉 :武汉大学出版社 , 2006. [2] 李联 , 信息安全中的 DES 加密算法 [J], 现代电子技术 , 2005, 9(2):207-211. [3] 胡长年 , DES 加密技术及 VC++ 的程序实现 [J], 化工时 刊 , 2004, 18(8):121-125.
作者简介 :周文婷 (1983 - ),女,硕士,助教,主要从事 机电一体化方向研究。 收稿日期 :2012-06-06
《网络安全原理与应用》 作 者 :陈志德 , 许力 出 版 社 :电子工业出版社 出版时间 :2012-06 I S B N :9787121171901 内容简介 :
因此,需要的对话框控件设计及属性如表 1 所 示。
表 1 对话框控件设计及属性
图 6 New 菜单命令的弹出对话框
选择 MFC APPVZARD,输入 project name 和 location,单击 ok 出现以图 7 所示对话框。
(3) 使对话框控件与变量关联。按 Ctrl+W 键运 行类向导 :
0 引言
随着互联网的普及,人们越来越多地使用计算 机网络来传递安全敏感信息,如网上银行业务、商 业数据交换、网上交易电子支付系统等,信息安全 的重要保障方法——“数据加密”逐渐成为备受关 注的热点问题。D E S 算法,全称为数据加密标准, 是一种对二元数据进行加密的算法,通过反复使用 加密组块替代和换位两种技术,经过 16 轮的变换 后得到密文,安全性高,属于分组密码算法中最有 名的两种常规密码算法之一。目前在国内,DES 算 法在 P O S、A T M、磁卡及智能卡(I C 卡)、加油 站、高速公路收费站等领域被广泛应用,以此来实 现关键数据的保密,如信用卡持卡人的 PIN 的加密 传输,I C 卡与 P O S 间的双向认证、金融交易数据
computer 学 术 . 技 术s e c u r i t y
基于 DES 算法的文件加密系统的设计与实现
周文婷,马凤伟,孔 庆
( 济宁职业技术学院,山东 济宁 272000)
摘 要 :随着互联网的普及,信息安全问题逐渐成为热点问题。DES 算法,全称为数据加密标准,是一种对二元数据进行加密 的算法,通过反复使用加密组块替代和换位两种技术,经过 16 轮的变换后得到密文,安全性高,在 POS、ATM、磁卡及智能卡(IC 卡)、加油站、高速公路收费站等领域被广泛应用。首先简要介绍了 D E S 算法的原理和流程,分析设计了用 V C + + 实现 D E S 加 解密的核心算法,在此基础上制作完成了一个文件加密系统。 关键词 :DES 算法 ;文件加密系统 ;VC++
表 3 为控件映射消息
目 前 为 止, 所 需 要 的 对 话 已 基 本 完 成, 接 下 来只需为响应函数添加代码并添加必要的其他函 数实现所需的功能,其中核心算法是 O n E n c B ( ), OnDecB(),只需根据上面介绍的算法原理调用相应 的函数即可。
由于其他响应函数的实现方法较简单,且具有
包的 MAC 校验等,均用到 DES 算法 。 [1]
1 DES 算法的基本原理
D E S 加 密 算 法 描 述 [2] :D E S 是 一 个 16 轮 的 F e i s t e l 型结构密码,其中分组长度为 64 位,密钥 长度为 64 位(实用 56 位),密文分组长度也为 64 位。
基金项目 :国家“星火”计划(2011GA74038)资助项目。
2012.07 13
输出 Li=Ri-1,Ri=Li-1 足 f (Ri-1,K),经过 16 轮运 算,得到 X16=L16R16 ;
(3) 对 X16 进行逆变换,得 64 比特密文 ; (4) 最后进行逆变换得出密文。 加密和解密采用相同的密钥,因而它属于对称 密码体制。
图 7 MFC AppWizard-Step1 对话框
2012.07 15
图 9 ClassWizard 对话框
并选择 Member Variables 属性页,然后选择 欲添加变量的控件并单击 Add Variables 按钮,在
弹出对话框中按如下表设置变量名及其类型。
表 2 控件对应的成员变量表