毕业设计(论文)-移动充值卡密加密技术.doc_第1页
毕业设计(论文)-移动充值卡密加密技术.doc_第2页
毕业设计(论文)-移动充值卡密加密技术.doc_第3页
毕业设计(论文)-移动充值卡密加密技术.doc_第4页
毕业设计(论文)-移动充值卡密加密技术.doc_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

i 移动充值卡密加密技术 作者姓名:栾学文 专业班级:2008050103 指导老师:李勇 摘 要 随着信息社会的到来,人们在享受信息资源所带来的巨大的利益的同时, 也面临着信息安全的严峻考验。信息安全已经成为世界性的现实问题,信息安 全问题已威胁到国家的政治、经济、军事、文化、意识形态等领域,同时,信 息安全问题也是人们能否护自己的个人隐私的关键。信息安全是社会稳定安全 的必要前提条件。 本文通过对各种软件和算法的研究,最后采用 vc+编写程序,实现了 des 加密算法,对移动充值卡密进行加密。将移动充值卡密以文件形式进行加密后, 其中信息不会被轻易盗用,保证了信息的安全性。 关键词:解密 加密 des 移动充值卡密 信息安全 ii mobile phone card dense encryption technology abstract: with the advent of the information society, people in the enjoyment of information resources brought about tremendous benefits, but also faced with a letter income security, a severe test. information security has become a worldwide reality, information security has been a threat to the countrys political .governance, economic, military, cultural, ideological and other areas at the same time, the issue of information security is also a possibility of retaining their own personal privacy key. information security and social stability is a necessary precondition for security. based on various software and algorithm research, useing vc+ implement des encryption algorithm to encrypt mobile recharge card. mobile recharge card in the form of a document is encrypted, the information will not be easily stolen, ensures the security of information keywords: decode, encode, des,mobile recharge information,information security iii 目 录 第 1 章 前 言1 第 2 章 需求分析2 2.1 系统概述.2 2.1.1 概述2 2.2 密码学的发展.2 2.3 文件加密解密中密码体制研究.6 2.3.1 密码原理6 2.3.2 密码体制7 第 3 章 分组加密解密算法-des 算法.10 3.1 des 算法简介10 3.2 des 加密过程详解10 第 4 章 des 算法的 c+实现19 4.1des 加密中所使用的函数.19 4.2des 实现文件加密函数及其代码.19 第 5 章 des 加密算法实例.21 5.1 实例程序 文件加密程序21 结 论23 致 谢24 参考文献25 附 录26 成都理工大学 2012 届本科毕业设计(论文) 1 第 1 章 前 言 信息安全是一个综合性的交叉学科领域,广泛涉及数学、密码学、计算机、 通信、控制、人工智能、安全工程、人文科学等诸多学科,是近几年迅速发展 的一个热点学科领域。信息对抗和网络安全是信息安全的核心热点,它的研究 和发展又将刺激、推动和促进相关学科的研究与发展。至今,密码技术是取得 信息安全性最有效的一种方法, 密码技术是信息安全的核心技术1。 通过数据加密,人们可以有效地保证通信线路上的内容不被泄露,而且还 可以检验传送信息的完整性。进一步,密码技术可以应用于数字签名、身份认 证和信息鉴定,这些应用对于资源存取控制以及其它安全措施是必须而且有效 的。信息安全产品从应用类型上可以分为防火墙类产品、防病毒类产品、防攻 击类产品、密码类产品、认证类产品和访问控制类产品。相对于防病毒软件和 防火墙软件来说,基于密码技术密码类产品、认证类产品份额相对较小,但随 着金融、电信、政府等行业信息化建设对于网络安全整体解决方案需求的增加, 将会有较大的增长。 在本次毕业设计中,使用典型的加密算法-des 对移动充值卡密进行加密, 从而达到防止别人盗用此卡密的目的。 成都理工大学 2012 届本科毕业设计(论文) 2 第 2章 需求分析 2.1 系统概述 移动通信充值卡加密系统是针对移动通信后付费业务而提出的一种便利而 又安全的解决方案。然而这种加密系统又由几部分决定其安全性:一是加密算 法的安全性,即加密技术。二是密钥的管理。本文主要针对加密算法进行研究。 2.1.1 概述 在现代社会中,信息处理和通信技术日益发展,保护信息的安全,特别是保护重要信 息的安全,越来越成受到国内外有关研究人员的极大重视。当前由于信息的保护不利和失 误,世界各国遭受的损失是巨大的。现在,国际互联网上的各站点,几乎都有各种各样的 安全措施,例如防火墙(firewall)、网络加密、加密狗等。但是,这些都是系统或网站层次 的安全设施。对于广大用户来说,更为直接、也更为有效的办法,就是使用信息加密技术。 加密技术是一门实用的技术,有着悠久的历史。过去,加密技术仅被军事和谋报人员以及 某些大型商业企业所采用,应用范围十分有限。加密学也是一门与数学有关的深奥的科学, 有能力研究加密学的人为数不多。恐怕这也是它鲜为人知、较少应用的原因。信息安全的 内容主要包括五个部分:信息的保密性、信息的完整性、信息的可用性、信息的可控性、 信息的不可否认性。密码技术是保证信息安全的核心。 2.2 密码学的发展 密码学的发展历程大致经历了四个阶段:古代加密方法、古典密码、近代 密码以及当代加密。 1.古代加密方法(手工阶段) 源于应用的无穷需求总是推动技术发明和进步的直接动力。存于石刻或史 书中的记载表明,许多古代文明,包括埃及人、希伯来人、亚述人都在实践中 逐步发明了密码系统。从某种意义上说,战争是科学技术进步的催化剂。人类 成都理工大学 2012 届本科毕业设计(论文) 3 自从有了战争,就面临着通信安全的需求,密码技术源远流长。 古代加密方法大约起源于公元前 440 年出现在古希腊战争中的隐写术。当 时为了安全传送军事情报,奴隶主剃光奴隶的头发,将情报写在奴隶的光头上, 待头发长长后将奴隶送到另一个部落,再次剃光头发,原有的信息复现出来, 从而实现这两个部落之间的秘密通信。 公元前 400 年,斯巴达人就发明了“塞塔式密码”,即把长条纸螺旋形地斜 绕在一个多棱棒上,将文字沿棒的水平方向从左到右书写,写一个字旋转一下, 写完一行再另起一行从左到右写,直到写完。解下来后,纸条上的文字消息杂 乱无章、无法理解,这就是密文,但将它绕在另一个同等尺寸的棒子上后,就能 看到原始的消息。这是最早的密码技术。 我国古代也早有以藏头诗、藏尾诗、漏格诗及绘画等形式,将要表达的真 正意思或“密语”隐藏在诗文或画卷中特定位置的记载,一般人只注意诗或画的 表面意境,而不会去注意或很难发现隐藏其中的“话外之音”。 比如:我画蓝江水悠悠,爱晚亭枫叶愁。秋月溶溶照佛寺,香烟袅袅绕轻 楼. 传输密文的发明地是古希腊,一个叫 aeneas tacticus 的希腊人在论要塞 的防护一书中对此做了最早的论述。公元前 2 世纪,一个叫 polybius 的希腊 人设计了一种将字母编码成符号对的方法,他使用了一个称为 polybius 的校验 表,这个表中包含许多后来在加密系统中非常常见的成分,如代替与换位。 polybius 校验表由一个 55 的网格组成(如表 1-1 所示) ,网格中包含 26 个英文 字母,其中 i 和 j 在同一格中。每一个字母被转换成两个数字,第一个是字母 所在的行数,第二个是字母所在的列数。如字母 a 就对应着 11,字母 b 就对 应着 12,以此类推。使用这种密码可以将明文“message”置换为密文“32 15 43 43 11 22 15”。在古代,这种棋盘密码被广泛使用。 2.古典密码(机械阶段) 古典密码的加密方法一般是文字置换,使用手工或机械变换的方式实现。古 典密码系统已经初步体现出近代密码系统的雏形,它比古代加密方法复杂,其 变化较小。古典密码的代表密码体制主要有:单表代替密码、多表代替密码及 转轮密码。 成都理工大学 2012 届本科毕业设计(论文) 4 caesar 密码及其改进方法 公元前 60 年(大约两千年前),古罗马统帅“朱利叶斯凯撒”(caesar),第一个用 当时发明的“凯撒密码”书写军事文书,用于战时通信。后来他成了古罗马帝王, 就是“凯撒”(caesar)大帝。 a.替换加密法 凯撒加密法是替换方法中的一个特例,消息中每一个字母换成向后三个字母 的字母的。学习并演示此算法的加密与解密过程的。 1:a b c d e f g h i j k l m n o p q r s t u v w x y z 3 个字母: 2:d e f g h i j k l m n o p q r s t u v w x y z a b c 4 个字母: 3:e f g h i j k l m n o p q r s t u v w x y z a b c d 明文:she is a student 密文:vkh lv d vwxghqw 算法:caesar 凯撒加密法 密钥:key 3(25 个密钥) b.单码加密法 凯撒加密法的改进就是采用单码加密法,消息中每一个字母换成 26 个字母中 的任何一个字母(除了本身不算之外)。比如:a=b-z b=a,c-z c=a,b,d- z。不过,还得满足这个单码是一个一一对应关系才行的。经过了这种单码加 密之后,26 个字母的任何转换与组合,就可以得到(26x25x24x23.x2)=4x(10 的 26 次方)种的可能性的。此算法的加密与解密的讲解的。 c.栅栏加密技术一 明文:come home tomorrow 算法:c m h m t m r o o e o e o o r w 成都理工大学 2012 届本科毕业设计(论文) 5 密文:cmhmtmrooeoeoorw 解密: c m h m t m r o o e o e o o r w 明文: come home tomorrow d.栅栏加密技术二 将明文信息一行一行地写入预定长度的矩形中的。假设矩形为 6 列. 明文:come home tomorrow 算法:第一列 第二列 第三列 第四列 第五列 第六列 c o m e h o m e t o m o r r o w 密文:cmr oer mto eowhmoo 解密: 16/6=2-3 c o m e h o m e t o m o r r o w 明文: come home tomorrow e.栅栏加密技术的变形之简单分栏式变换加密技术,将栅栏加密技术二中的顺 序读取方法变成随机读取。 将明文信息一行一行地写入预定长度的矩形中的。假设矩形为 6 列. 明文:come home tomorrow 算法:第一列 第二列 第三列 第四列 第五列 第六列 c o m e h o m e t o m o r r o w 密钥:123456(顺序读取方式) 密文:cmr oer mto eow hm oo 密钥:461253(随机顺序读取方式) 密文:eow oo cmr oer hm mto 成都理工大学 2012 届本科毕业设计(论文) 6 f:解密这种单码加密法(caesar)变换及简单分栏式变换 一般采用语言中的语句的使用频度来破解的. 3.近代密码(计算机阶段) 密码形成一门新的学科是在 20 世纪 70 年代,这是受计算机科学蓬勃发展 刺激和推动的结果。快速电子计算机和现代数学方法一方面为加密技术提供了 新的概念和工具,另一方面也给破译者提供了有力武器。计算机和电子学时代 的到来给密码设计者带来了前所未有的自由,他们可以轻易地摆脱原先用铅笔 和纸进行手工设计时易犯的错误,也不用再面对用电子机械方式实现的密码机 的高额费用。总之,利用电子计算机可以设计出更为复杂的密码系统。 1.常见的对称加密算法: des、idea、rc 系列(rc2,rc4,rc5)、cast 和 blowfish. 2.常见的非对称加密算法: rsa、elgamal、背包算法、rabin、d-h、ecc(椭圆曲线加密算法) 。 而非对称密码与对称密码比较,非对称加密运算速度比对称加密要慢数千 倍。并且其算法也较复杂,所以本文用比较常用的对称加密算法,且对密码学 发展史上有着重要作用的 des 算法对移动充值卡加密进行探讨。 4.当代密码 由于技术发展,当代加密技术更加先进,更加难以破解。当代加密系统除了加强以前 的经典加密算法外,已经研究出图像加密以及生物加密。已经广泛使用的就是一维码和二 维码。生物加密是指根据指纹以及瞳孔等人体生物特征对重要文件或者其他重要东西进行 加密。 2.3 文件加密解密中密码体制研究 就整体而言,计算机中的加密问题应包括文件存储加密、口令存储加密、 数据库数据加密、电子邮件加密等信息加密和数据传输加密(信道加密)以及 密码体制、密钥管理中心等三个方面的内容,下面我们通过加密原理和密码体 制来概略地讲讲这三个方面的内容: 成都理工大学 2012 届本科毕业设计(论文) 7 2.3.1 密码原理 (1)密码原理。所谓加密,就是将正常情况下可懂的文件数据输入密码机, 由密码机变成不可懂的乱码,即将“明文”变成“密文”;所谓解密,就是上 述过程的逆过程,即将“密文” 变成“明文”。密码机可看做是一个用电子 元件实现一种复杂数学运算的机器。复杂数学运算可记为,这里 c=密文,p=明 文,k=密钥,f 是密码算法。k 是自变量,c 是因变量。不同的 k 有不同的 c, 对于某个密码算法 f,k 的选择范围越大,c 的变化就越多,这个密码算法被人 破译的难度就越大,保密强度就越高。如何评价 k 的选择范围大小呢?一般是 看 k 的位数,位数长的(如 128 位以上)选择范围大,位数短的(如 56 位)选 择范围小。一个国家的密码政策,通常是用位数长的高强度密码(位数可达) 保护国家秘密,其它用于保护商业秘密。 在数据传输加密过程中,收发双方线路密码机使用的是相同的密码算法, 注入了相同的密钥,发方向收方发出明文,经密码机变成密文后送上公网通信 线路,到达收方后先经密码机解密再送到收方电脑上。密文在公用通信网上传 输时,如果被截收,窃密方收到的是不可懂的乱码,无法窃取信息内容。 在文件存储加密中,加密解密卡加解密采用同一种算法和同一个密钥,工 作人员用电脑处理文件后先将文件加密再存入磁盘,以防窃密者盗用磁盘窃取 文件。工作人员调用该文件时,文件先经解密再从显示器上显示出来以供使用。 2.3.2 密码体制 密码体制:密码体制也叫密码系统,是指能完整地解决信息安全中的机密 性、数据完整性、认证、身份识别、可控性及不可抵赖性等问题中的一个或几 个的一个系统。对一个密码体制的正确描述,需要用数学方法清楚地描述其中 的各种对象、参数、解决问题所使用的算法等。 密码体制又分为私用密钥加密技术(对称加密)和公开密钥加密技术(非对称 加密)。 1、对称密码体制 对称密码体制是一种传统密码体制,也称为私钥密码体制。在对称加密系 成都理工大学 2012 届本科毕业设计(论文) 8 统中,加密和解密采用相同的密钥。因为加解密密钥相同,需要通信的双方必 须选择和保存他们共同的密钥,各方必须信任对方不会将密钥泄密出去,这样 就可以实现数据的机密性和完整性。对于具有 n 个用户的网络,需要 n(n-1)/2 个密钥,在用户群不是很大的情况下,对称加密系统是有效的。但是对于大型 网络,当用户群很大,分布很广时,密钥的分配和保存就成了问题。对机密信 息进行加密和验证随报文一起发送报文摘要(或散列值)来实现。比较典型的算 法有 des(data encryption standard 数据加密标准)算法及其变形 triple des(三重 des),gdes(广义 des);欧洲的 idea;日本的 feal n、rc5 等。des 标准由美国国家标准局提出,主要应用于银行业的电子资金转帐(eft) 领域。des 的密钥长度为 56bit。triple des 使用两个独立的 56bit 密钥对交 换的信息进行 3 次加密,从而使其有效长度达到 112bit。rc2 和 rc4 方法是 rsa 数据安全公司的对称加密专利算法,它们采用可变密钥长度的算法。通过 规定不同的密钥长度,,c2 和 rc4 能够提高或降低安全的程度。对称密码算法 的优点是计算开销小,加密速度快,是目前用于信息加密的主要算法。它的局 限性在于它存在着通信的贸易双方之间确保密钥安全交换的问题。此外,某一 贸易方有几个贸易关系,他就要维护几个专用密钥。它也没法鉴别贸易发起方 或贸易最终方,因为贸易的双方的密钥相同。另外,由于对称加密系统仅能用 于对数据进行加解密处理,提供数据的机密性,不能用于数字签名。因而人们 迫切需要寻找新的密码体制。 2、非对称密码体制 非对称密码体制也叫公钥加密技术,该技术就是针对私钥密码体制的缺陷 被提出来的。在公钥加密系统中,加密和解密是相对独立的,加密和解密会使 用两把不同的密钥,加密密钥(公开密钥)向公众公开,谁都可以使用,解密密 钥(秘密密钥)只有解密人自己知道,非法使用者根据公开的加密密钥无法推算 出解密密钥,顾其可称为公钥密码体制。如果一个人选择并公布了他的公钥, 另外任何人都可以用这一公钥来加密传送给那个人的消息。私钥是秘密保存的, 只有私钥的所有者才能利用私钥对密文进行解密。公钥密码体制的算法中最著 名的代表是 rsa 系统,此外还有:背包密码、mceliece 密码、 diffe_hellman、rabin、零知识证明、椭圆曲线、eigamal 算法等。公钥密钥 成都理工大学 2012 届本科毕业设计(论文) 9 的密钥管理比较简单,并且可以方便的实现数字签名和验证。但算法复杂,加密 数据的速率较低。公钥加密系统不存在对称加密系统中密钥的分配和保存问题, 对于具有 n 个用户的网络,仅需要 2n 个密钥。公钥加密系统除了用于数据加密 外,还可用于数字签名。公钥加密系统可提供以下功能:a、机密性 (confidentiality):保证非授权人员不能非法获取信息,通过数据加密来实 现;b、确认(authentication):保证对方属于所声称的实体,通过数字签名 来实现;c、数据完整性(data integrity):保证信息内容不被篡改, 入侵者不可能用假消息代替合法消息,通过数字签名来实现;d、不可抵赖性 (nonrepudiation):发送者不可能事后否认他发送过消息,消息的接受者可 以向中立的第三方证实所指的发送者确实发出了消息,通过数字签名来实现。 可见公钥加密系统满足信息安全的所有主要目标。 成都理工大学 2012 届本科毕业设计(论文) 10 第 3 章 分组加密解密算法-des 算法 3.1 des 算法简介 des 算法为密码体制中的对称密码体制,又被成为美国数据加密标准, 是 1972 年美国 ibm 公司研制的对称密码体制加密算法。其密钥长度为56 位,明文按 64 位进行分组,将分组后的明文组和56 位的密钥按位替代或 交换的方法形成密文组的加密方法。 des 加密算法特点:分组比较短、密钥太短、密码生命周期短、运算速 度较慢。 des 工作的基本原理是,其入口参数有三个 :key、data、mode。 key 为加密解密使用的密钥, data 为加密解密的数据, mode 为其工作模 式。当模式为加密模式时,明文按照64 位进行分组,形成明文组, key 用 于对数据加密,当模式为解密模式时, key 用于对数据解密。实际运用中, 密钥只用到了 64 位中的 56 位,这样才具有高的安全性。 des( data encryption standard)算法,于 1977 年得到美国政府的正 式许可,是一种用 56 位密钥来加密 64 位数据的方法。虽然 56 位密钥的 des 算法已经风光不在 ,而且常有用 des 加密的明文被破译的报道 ,但是了 解一下昔日美国的标准加密算法总是有益的 ,而且目前 des 算法得到了广 泛的应用,在某些场合,仍然发挥着余热。 3.2 des 加密过程详解 3.2.1 des 加密流程 des 是对二元数字分组加密的分组密码算法,分组长度为 64 比特。每 64 位明文加密成 64 位密文,没有数据压缩和扩展,密钥长度为 56 比特, 若输入 64 比特,则第 8,16,24,32,40,48,56,64 为奇偶校验位,所 以,实际密钥只有 56 位。des 算法完全公开,其保密性完全依赖密钥。 它的缺点就在于密钥太短。 成都理工大学 2012 届本科毕业设计(论文) 11 设明文串 m=m1m2m64;密钥串 k=k1k2k64。 在后面的介绍中可以看到 k8,k16,k24,k32,k40,k48,k56,k64 实际上是 不起作用的。 des 的加密过程可表示为: des(m)= ip-1t16t15t2t1ip(m). 下面是完全 16 轮 des 算法框图: 图 3-1 完全 16 轮 des 算法 3.2.2 初始置换 ip 初始置换是将输入的 64 位明文分为 8 个数组,每一组包括 8 位,按 1 至 64 编号。 ip 的置换规则如下表: 成都理工大学 2012 届本科毕业设计(论文) 12 表 3-1 ip 置换规则 5 8 5 0 4 2 3 4 2 6 1 8 1 0 2 6 0 5 2 4 4 3 6 2 8 2 0 1 2 4 6 2 5 4 4 6 3 8 3 0 2 2 1 4 6 6 4 5 6 4 8 4 0 3 2 2 4 1 6 8 5 7 4 9 4 1 3 3 2 5 1 7 9 1 5 9 5 1 4 3 3 5 2 7 1 9 1 1 3 6 1 5 3 4 5 3 7 2 9 2 1 1 3 5 6 3 5 5 4 7 3 9 3 1 2 3 1 5 7 即将输入的第 58 位换到第 1 位,第 50 位换到第 2 位,依次类推, 最后一位是原来的第 7 位。 3.2.3 ip-1 是 ip 的逆置换表 逆置换规则如下表所示:由于第 1 位经过初始置换后,已处于第 40 位。 逆置换就是再将第 40 位换回到第 1 位。 表 3-2 ip-1 置换 4 0 84 8 1 6 5 6 2 4 6 4 3 2 3 9 7 4 7 1 5 5 5 2 3 6 3 3 1 3 8 6 4 6 1 4 5 4 2 2 6 2 3 0 3 7 5 4 5 1 3 5 3 2 1 6 1 2 9 3 6 4 4 4 1 2 5 2 2 0 6 0 2 8 3 5 3 4 3 1 1 5 1 1 9 5 9 2 7 3 4 2 4 2 1 0 5 0 1 8 5 8 2 6 3 3 1 4 1 9 4 9 1 7 5 7 2 5 成都理工大学 2012 届本科毕业设计(论文) 13 初始置换 ip 及其逆置换 ip-1 并没有密码学意义,因为置换前后的一 一对应关系是已知的。它们的作用在于打乱原来输入明文的 asc码字划分 的关系,并将原来明文的第位 m8,m16,m24,m32,m40,m48,m56,m64 位(校验位)变成 ip 的输出的一个字节。 3.2.4 des 算法的迭代过程 图 3-2 des 算法的迭代过程图 图中 li-1 和 ri-1 分别是第 i-1 次迭代结果的左右两部分,各 32 比特。 即 li=ri-1, ri=li-1 f(ri-1,ki)。其中轮密钥 ki 为 48 比特,函数 f(r,k)的计算过程如图 1.5 所示。轮输入的右半部分 r 为 32 比特,r 首先 被扩展成 48 比特,扩展过程由表 3 定义,其中将 r 的 16 个比特各重复一 次。扩展后的 48 比特再与子密钥 ki 异或,然后再通过一个 s 盒,产生 32 比特的输出。该输出再经过一个由表 4 定义的置换,产生的结果即为函数 f(r,k)的输出。 成都理工大学 2012 届本科毕业设计(论文) 14 表 3-3 扩展 e 32 1 2 3 4 5 4 5 6 7 8 9 8 910111213 121314151617 161718192021 202122232425 242526272829 2829303132 1 ki 是由 64 比特的初始密钥(亦称种子密钥)导出的第 i 轮子密钥,ki 是 48 比特 des 算法的关键是 f(ri-1,ki)的功能,其中的重点又在 s-盒 (substitution boxes)上。f 函数的输出是 32 比特。 图 3-3 f 函数计算过程图 成都理工大学 2012 届本科毕业设计(论文) 15 将 r 经过一个扩展运算 e 变为 48 位,记为 e(r) 。计算 e(r) k=b,对 b 施行代换 s,此代换由 8 个代换盒组成,即 s-盒。每个 s-盒有 6 个输入,4 个输出,将 b 依次分为 8 组,每组 6 位,记 b= b1b2b3b4b5b6b7b8 其中 bj 作为第 j 个 s-盒的输入,其输出为 cj,c= c1c2c3c4c5c6c7c8 就是代换 s 的输出,所以代换 s 是一个 48 位输入,32 位输出的选择压缩运算,将结果 c 再实行一个置换 p(表 4) ,即得 f(r,k)。 其中,扩展运算 e 与置换 p 主要作用是增加算法的扩散效果。s-盒是 des 算法中唯一的非线性部件,当然也就是整个算法的安全性所在。它的设 计原则与过程一直因为种种不为人知的因素所限,而未被公布出来。 s-盒如下表: 表 3-4 s-盒函数 14 413 1 21511 8 310 612 5 9 0 7 015 7 414 213 110 61211 9 5 3 8 4 114 813 6 2111512 9 7 310 5 0 s1 1512 8 2 4 9 1 7 511 31410 0 613 15 1 814 611 3 4 9 7 21312 0 510 313 4 715 2 81412 0 110 6 911 5 014 71110 413 1 5 812 6 9 3 215 s2 13 810 1 315 4 211 6 712 0 514 9 10 0 914 6 315 5 11312 711 4 2 8 13 7 0 9 3 4 610 2 8 514121115 1 13 6 4 9 815 3 011 1 212 51014 7 s3 11013 0 6 9 8 7 41514 311 5 212 71314 3 0 6 910 1 2 8 51112 415 13 811 5 615 0 3 4 7 212 11014 9 10 6 9 01211 71315 1 314 5 2 8 4 s4 315 0 610 113 8 9 4 51112 7 214 212 4 1 71011 6 8 5 31513 014 9 成都理工大学 2012 届本科毕业设计(论文) 16 1411 212 4 713 1 5 01510 3 9 8 6 4 5 1111013 7 815 912 5 6 3 014 s 5 11 812 7 114 213 615 0 910 4 5 3 12 11015 9 2 6 8 013 3 414 7 511 1015 4 2 712 9 5 6 11314 011 3 8 91415 5 2 812 3 7 0 410 11311 6 s6 4 3 212 9 515101114 1 7 6 0 813 411 21415 0 813 312 9 7 510 6 1 13 011 7 4 9 11014 3 512 215 8 6 1 4111312 3 7141015 6 8 0 5 9 2 s7 61113 8 1 410 7 9 5 01514 2 312 13 2 8 4 61511 110 9 314 5 012 7 11513 810 3 7 412 5 611 014 9 2 711 4 1 91214 2 0 6101315 3 5 8 s 2 114 7 410 8131512 9 0 3 5 611 s-盒的置换规则为: 取0,1,15上的 4 个置换,即它的 4 个排列排成 4 行,得一 4*16 矩阵。若给定该 s 盒的 6 个输入为 b0 b1 b2 b3 b4 b5,在 si 表中找 出 b0 b5 行,b1b2 b3b4 列的元素,以 4 位二进制表示该元素,此为 s-盒 si 的输出。 例 2.1 s2 的输入为 101011, b1 =1,b6=1,b1 b6=(11)2=3 (b2 b3 b4 b5)2=(0101)2=5 查 s2 表可知第 3 行第 5 列的输出是 15,15 的二进制表示为 1111。 则 s2 的输出为 1111。8 个 s-盒的代换方式都是一样的。 s 盒输出的 32 比特经 p 置换,p 置换的功能是将 32 位的输入,按以下 顺序置换,然后输入仍为 32 比特。p 置换的顺序如表 3.5: 表 3-5 置换 p_permute32 16 72021 29122817 1152326 成都理工大学 2012 届本科毕业设计(论文) 17 5183110 2 82414 3227 3 9 191330 6 2211 425 3.2.5 子密钥生成 图 3-4 des 子密钥生成流程图 图 3.4 给出了子密钥产生的流程图。首先对初始密钥经过置换 pc- 1(表 3.67) ,将初始密钥的 8 个奇偶校验位剔除掉,而留下真正的 56 比 特初始密钥。 表 3-6 密钥置换 pc_permute156 574941332517 9 1585042342618 10 25951433527 初始密钥 k(64bit) pc-1 c0(28bit)d0(28bit) ls1ls1 c1d1 ls2ls2 ls16ls16 c16d16pc-2 pc-2 k16 k1 成都理工大学 2012 届本科毕业设计(论文) 18 1911 360524436 63554739312315 7625446383022 14 66153453729 2113 5282012 4 然后将此 56 位分为 c0,d0 两部分,各 28 比特,c0,d0 如下: c0=k57k49k44k36 d0=k63k55k12k4 然后分别进行一个循环左移函数 ls1,得到 c1,d1,将 c1(28 位), d1(28 位)连成 56 比特数据,再经过密钥置换 pc-2(表 2.7)做重排动作, 从而便得到了密钥 k1(48 位) 。依次类推,便可得到 k2,k3k16。 表 3-7 密钥置换 pc_permute248 14171124 1 5 32815 62110 231912 426 8 16 7272013 2 415231374755 304051453348 444939563453 464250362932 其中 ls1(1i16)表示一个或两个位置的循环左移,当 i=1,2,9,16 时,移一个位置,当 i=3,4,5,6,7,8,10,11,12,13,14,15 时,移两个位置。 3.2.6 des 解密过程 des 算法的解密过程跟加密过程是一样的,区别仅仅在于第一次迭代时 用密钥 k16,第二次 k15、,最后一次用 k1,算法本身没有任何变化。 成都理工大学 2012 届本科毕业设计(论文) 19 第 4 章 des 算法的 c+实现 4.1 des 加密中所使用的函数 void ip_pm(unsigned int x2) ip 置换函数 void ip_pm1(unsigned int x2) ip 逆置换 void pc1(unsigned int x2) 密钥置换 64 位到 56 位 void pc2(unsigned x2) 密钥置换 56 位到 48 位 unsigned int pm(unsigned int x) 32 位置换 unsigned int sbox(unsigned int x2) s 盒置换 void extend(unsigned int x,unsigned int y2) 扩展换算 unsigned int ltr(unsigned int x,unsigned int y) 28 位密钥 移位 void ckey(unsigned int x2,unsigned int y162) 密钥生成 void cryption(unsigned int text2,unsigned int key162,int flag) unsigned int chtoint(char ch4) void inttoch(_int64 temp,char ch4) 4.2 des 实现文件加密函数及其代码 运用 des 算法可以对目标进行加密使其成为密文,下面函数便是对运用算 法对文件加密,使得文件内容变得不可读取。 int filecryption(char *fname,char ch9,int crypflag) file *fp; char ckey14=0,0,0,0,ckey24=0,0,0,0; unsigned keyn2; unsigned skeyn162; char text14,text24; unsigned int textn2; ckey10=ch0; ckey11=ch1; ckey12=ch2; ckey13=ch3; ckey20=ch4;ckey21=ch5;ckey22=ch6;ckey23=ch7; keyn0=chtoint(ckey1); keyn1=chtoint(ckey2); ckey(keyn,skeyn); fp=fopen(fname,“rb+“); if(fp=null) 成都理工大学 2012 届本科毕业设计(论文) 20 return 2; int ftel=fseek(fp,0,2); ftel=ftell(fp); ftel=ftel%8; for(int j=ftel;0recalclayout(); resizeparenttofit(); / 成都理工大学 2012 届本科毕业设计(论文) 28 / cfile_des_mfcview printing bool cfile_des_mfcview:onprepareprinting(cprintinfo* pinfo) / default preparation return doprepareprinting(pinfo); void cfile_des_mfcview:onbeginprinting(cdc* /*pdc*/, cprintinfo* /*pinfo*/) / todo: add extra initialization before printing void cfile_des_mfcview:onendprinting(cdc* /*pdc*/, cprintinfo* /*pinfo*/) / todo: add cleanup after printing void cfile_des_mfcview:onprint(cdc* pdc, cprintinfo* /*pinfo*/) / todo: add customized printing code here / / cfile_des_mfcview diagnostics #ifdef _debug void cfile_des_mfcview:assertvalid() const cformview:assertvalid(); void cfile_des_mfcview:dump(cdumpcontext cfile_des_mfcdoc* cfile_des_mfcview:getdocument() / non-debug version is inline assert(m_pdocument-iskindof(runtime_class(cfile_des_mfcdoc); return (cfile_des_mfcdoc*)m_pdocument; #endif /_debug 成都理工大学 2012 届本科毕业设计(论文) 29 / / cfile_des_mfcview message handlers void cfile_des_mfcview:onscan() / todo: add your control notification handler code here updatedata(true); cfile fp; cfiledialog file_dlg(true,“ec“,“*.*“,null,“*.*“); if(file_dlg.domodal()!=idok) return; s=file_dlg.getpathname(); m_fn=s; sflag=1; updatedata(false); void cfile_des_mfcview:onopen() / todo: add your control notification handler code here updatedata(true); system(s); updatedata(false); /* des 中的各个子函数 */ char ip_permute64= 58,50,42,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; char ip_permute_164= 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, 成都理工大学 2012 届本科毕业设计(论文) 30 34,2,42,10,50,18,58,26, 33,1,41,9,49,17,57,25; char p_permute32= 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; char s_box1416= 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; char s_box2416= 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,12,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; char s_box3416= 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,; char s_bo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论