加密解密算法的C++实现..docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
加密解密算法的C实现.

网络与信息安全 Introduction to Network and Security ——DES 加密解密算法的C++实现 2011年10月 目录 一、DES算法的概述 3 1、DES简介 3 2、DES算法原理 3 3、DES算法简述 4 3.1算法过程的具体分析 5 3.2 具体示例分析 8 二、DES算法的C++实现 9 1、运行环境 9 2、功能说明 9 3、程序函数说明 9 4、程序运行效果图 20 三、小结 22 一、DES算法的概述 1、DES简介 DES是Data Encryption Standard(数据加密标准)的缩写。1974年,IBM向NBS提交了由Tuchman博士领导的小组设计并经改造的Luciffer算法。NSA(美国国家安全局)组织专家对该算法进行了鉴定,使其成为DES的基础。 1975年NBS公布了这个算法,并说明要以它作为联邦信息加密标准,征求各方意见。1976年,DES被采纳作为联邦标准,并授权在非机密的政府通信中使用。DES在银行,金融界崭露头角,随后得到广泛应用。 几十年过去了,虽然DES已不再作为数据加密标准,但它仍然值得研究和学习。首先三重算法仍在Internet中广泛使用,如PGP和S/MIME中都使用了三重DES作为加密算法。其次,DES是历史上最为成功的一种分组密码算法,它的使用时间之长,范围之大,是其它分组密码算法不能企及的,而DES的成功则归因于其精巧的设计和结构。 2、DES算法原理 DES是一个对称分组密码,它使用56位密钥操作64位分组。DES以64位分组形式加密数据。算法的输入是64位分组的明文,算法的输出是64位分组的密文,明文到密文经过了16轮一致的运算。通过剔除8个奇偶校验位,即忽略给定64位密钥中的每一个第8位,从而得到密钥长度为56位。 与其他分组加密方案一样,加密函数使用了两个输入:要被加密的64位明文和56位密钥。DES的基本构建是对明文分组的进行置换和替换的适宜组合(16次)。通过S-盒查表完成替换。除了以相反次序处理密钥次序表之外,加密和解密使用了相同的算法。 明文分组X组首先按初始置换IP表进行置换,得到Xo=IP(X)=(Lo,Ro)。经过16轮的置换、XOR和替换之后,反向置换IP^-1生成密文分组。如果使用Xi=(Li,Ri)表示第i轮加密结果,那么有: Li=Ri-1 Ri=Li-1⊕ f(Ri-1,Ki) DES的第i轮加密如图2-1所示。从加密公式中能够导出如下的解密过程: Ri-1=Li Li-1=Ri ⊕ f(Ri-1,Ki)= Ri⊕f(Li,Ki) 图2-1 DES算法的第i轮过程 3、DES算法简述 DES算法处理的数据对象是一组64比特的明文串。设该明文串为m=m1m2…m64 (mi=0或1)。明文串经过64比特的密钥K来加密,最后生成长度为64比特的密文E。其加密算法过程如图3-1所示下: 图3-1算法加密流程图 3.1算法过程的具体分析 ①IP置换 对DES算法加密过程图示的说明如下:待加密的64比特明文串m,经过IP置换后,得到的比特串的下标列表如表3-1下: 该比特串被分为32位的Lo和32位的Ro两部分。Ro子密钥K1(子密钥的生成将在后面讲)经过变换f(Ro,K1)(f变换将在下面讲)输出32位的比特串f1,f1与Lo做不进位的二进制加法运算。运算规则为: f1与Lo做不进位的二进制加法运算后的结果赋给R1,Ro则原封不动的赋给L1。L1与Ro又做与以上完全相同的运算,生成L2,R2…… 一共经过16次运算。最后生成R16和L16。其中R16为L15与f(R15,K16)做不进位二进制加法运算的结果,L16是R15的直接赋值。 R16与L16合并成64位的比特串。值得注意的是R16一定要排在L16前面。R16与L16合并后成的比特串,经过置换IP-1后所得比特串的下标列表3-2如下: 经过置换IP-1后生成的比特串就是密文。 ②变换f(Ri-1,Ki)的功能 它的功能是将32比特的输入再转化为32比特的输出。其过程如图3-2所示: 对f变换说明如下:输入Ri-1(32比特)经过变换E后,膨胀为48比特。膨胀后的比特串的下标列表3-3如下: 膨胀后的比特串分为8组,每组6比特。各组经过各自的S盒后,又变为4比特(具体过程见后),合并后又成为32比特。该32比特经过P变换后,其下标列表3-4如下: 经过P变换后输出的比特串才是32比特的f (Ri-1,Ki)。 ③S盒的变换过程 任取一S盒。见图3-3所示。 在其输入b1,b2,b3,b4,b5,b6中,计算出x=b1*2+b6, y=b5+b4*2

文档评论(0)

stzs + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档