欢迎光临112期刊网!
网站首页 > 论文范文 > 计算机论文 > 计算机应用 > 数据加密中的DES加密算法详解

数据加密中的DES加密算法详解

日期:2023-01-24 阅读量:0 所属栏目:计算机应用


[摘要] 本文详细介绍了des数据加密算法的原理,并给出了一个例子演示了如何使用c#中的加密包进行des算法加密,最后对des进行了评价。
  [关键词] 加密 对称 非对称 des 密钥 明文 密文
  
  从最初的保密通信发展到目前的网络信息加密,信息加密技术一直伴随着信息技术的发展而发展。作为计算机信息保护的最实用和最可靠的方法,信息加密技术被广泛应用到信息安全的各个领域。信息加密技术是一门涉及数学、密码学和计算机的交叉学科。现代密码学的发展,使信息加密技术已经不再依赖于对加密算法本身的保密,而是通过在统计学意义上提高破解的成本来提供高加密算法的安全性。
  密码学是一门古老而又年轻的科学,它用于保护军事和外交通信,可追溯到几千年前。1976年diffie和hellman的“密码学的新方向”一文引发的密码学的一场革命,开创了公钥密码学的新纪元。
  常用加密算法主要用来对敏感数据、摘要、签名等信息进行加密。按照密钥方式划分,可分为对称加密算法和非对称加密算法。
  
  一、对称加密算法
  
   对称加密算法有时又叫做传统密码算法,加密密钥可以从解密密钥中推导出来,解密密钥也可以从加密密钥中推导出来。在大多数的对称算法中,加密密钥和解密密钥是相同的,因此也成为秘密密钥算法或者单密钥算法。它要求发送发和接收方在安全通信之前先商定一个密钥。对称算法的安全性依赖于密钥,所以密钥的保密性对通信至关重要。对称加密算法主要有分组加密和流加密两类。分组加密是指将明文分成固定商都的组,用同一密钥分别对每一组加密,输出固定长度的密文,典型代表:des、3des、idea。
  
  二、非对称加密算法
  
  非对称加密算法有时又叫做公开密钥算法。其中用到两个密钥。一个是公共的,一个事私有的。一个密钥用于加密,另一个密钥用于解密。两个密钥不能够互相推导。常用的非对称加密算法有rsa公钥算法、diffie-hellman算法和ecc椭圆曲线密码。
  我们详细分析一下des加密算法的处理过程。
  des加密算法是分组加密算法,明文以64位为单位分成块。64位数据在64位密钥的控制下,经过初始变换后,进行16轮加密迭代:64位数据被分成左右两半部分,每部分32位,密钥与右半部分相结合,然后再与左半部分相结合,结果作为新的右半部分;结合前的右半部分作为新的左半部分。这一系列步骤组成一轮。这种轮换要重复16次。最后一轮之后,再进行初始置换的逆置换,就得到了64位的密文。

  des的加密过程可分为加密处理,加密变换和子密钥生成几个部分组成。
  1.加密处理过程
  (1)初始变换。加密处理首先要对64位的明文按表1所示的初始换位表ip进行变换。表中的数值表示输入位被置换后的新位置。例如输入的第58位,在输出的时候被置换到第1位;输入的是第7位,在输出时被置换到第64位。
 
  (2)加密处理。上述换位处理的输出,中间要经过16轮加密变换。初始换位的64位的输出作为下一次的输入,将64位分为左、右两个32位,分别记为l0和r0,从l0、r0到l16、r16,共进行16轮加密变换。其中,经过n轮处理后的点左右32位分别为ln和rn,则可做如下定义:
  ln=rn-1
  rn=ln-1
  其中,kn是向第n轮输入的48位的子密钥,ln-1和rn-1分别是第n-1轮的输出,f是mangler函数。
  (3)最后换位。进行16轮的加密变换之后,将l16和r16合成64位的数据,再按照表2所示的
  最后换位表进行ip-1的换位,得到64位的密文,这就是des算法加密的结果。

  2.加密变换过程
  通过重复某些位将32位的右半部分按照扩展表3扩展换位表扩展为48位,而56位的密钥先移位然后通过选择其中的某些位减少至48位,48位的右半部分通过异或操作和48位的密钥结合,并分成6位的8个分组,通过8个s-盒将这48位替代成新的32位数据,再将其置换一次。这些s-盒输入6位,输出4位。s盒如表5所示。
 
  一个s盒中具有4种替换表(行号用0、1、2、3表示),通过输入的6位的开头和末尾两位选定行,然后按选定的替换表将输入的6位的中间4位进行替代,例如:当向s1输入011011时,开头和结尾的组合是01,所以选中编号为1的替代表,根据中间4位1101,选定第13列,查找表中第1行第13列所示的值为5,即输出0101,这4位就是经过替代后的值。按此进行,输出32位,再按照表4 单纯换位表p进行变换,这样就完成了f(r,k)的变换,如图2所示。
 
  3.子密钥生成过程
  钥通常表示为64位的自然数,首先通过压缩换位pc-1去掉每个字节的第8位,用作奇偶校验,因此,密钥去掉第8、16、24……64位减至56位,所以实际密钥长度为56位,而每轮要生成48位的子密钥。
  输入的64位密钥,首先通过压缩换位得到56位的密钥,每层分成两部分,上部分28位为c0,下部分为d0。c0和d0依次进行循环左移操作生成了c1和d1,将c1和d1合成56位,再通过压缩换位pc-2输出48位的子密钥k1,再将c1和d1进行循环左移和pc-2压缩换位,得到子密钥k2......以此类推,得到16个子密钥。密钥压缩换位表如表6所示。在产生子密钥的过程中,l1、l2、l9、l16是循环左移1位,其余都是左移2位,左移次数如表7所示。
 
  4.解密处理过程
  从密文到明文的解密过程可采用与加密完全相同的算法。不过解密要用加密的逆变换,就是把上面的最后换位表和初始换位表完全倒过来变换。这里不再赘述。
  下面这个例子中演示了如何使用c#中的加密包进行des算法加密,大家可以借助这个例子一窥des加密的用法。
  代码如下:
  using system;
  using graphy;
  using ;
  using ;
  public class encryptstringdes {
   public static void main(string[] args) {
   if ( < 1) {
   ine("usage: des_demo
  encrypt>", args[0]);
   return;
   }
   // 使用utf8函数加密输入参数
   utf8encoding utf8encoding = new utf8encoding();
   byte[] inputbytearray = es(args
  [0].tochararray());
   // 方式一:调用默认的des实现方法des_csp.
   des des = ();
   // 方式二:直接使用des_csp()实现des的实体

   //des_csp des = new des_csp();
   // 初始化des加密的密钥和一个随机的、8比特的初始化向量(iv)
   byte[] key = {0x01, 0x23, 0x45, 0x67, 0x89, 0xab,
  0xcd, 0xef};
   byte[] iv = {0x12, 0x34, 0x56, 0x78, 0x90, 0xab,
  0xcd, 0xef};
   = key;
   = iv;
   // 建立加密流
   symmetricstreamencryptor sse = encryptor();
   // 使用cryptomemorystream方法获取加密过程的输出
   cryptomemorystream cms = new cryptomemorystream();
   // 将symmetricstreamencryptor流中的加密数据输出到
  cryptomemorystream中
   k(cms);
   // 加密完毕,将结果输出到控制台
   (inputbytearray);
   tream();
   // 获取加密数据
   byte[] encrypteddata = ;
   // 输出加密后结果
   ine("加密结果:");
   for (int i = 0; i < ; i++) {
   ("{0:x2} ",encrypteddata[i]);
   }
   ine();
   //上面演示了如何进行加密,下面演示如何进行解密
   symmetricstreamdecryptor ssd = decryptor();
   cms = new cryptomemorystream();
   k(cms);
   (encrypteddata);
   tream();
   byte[] decrypteddata = ;
  char[] decryptedchararray = rs(decrypteddata);
   ine("解密后数据:");
   (decryptedchararray);
   ine(); }
  }
  编译:
  d:\csharp>csc
  microsoft (r) c# compiler version 7.00.8905 [ngws runtime
  2000.14.1812.10]
  copyright (c) microsoft corp 2000. all rights reserved.
  运行实例:
  d:\csharp> 使用c#编写des加密程序的framework
  加密结果:
  3d 22 64 c6 57 d1 c4 c3 cf 77 ce 2f d0 e1 78 2a 4d ed 7a a8
  83 f9 0e 14 e1 ba 38
  7b 06 41 8d b5 e9 3f 00 0d c3 28 d1 f9 6d 17 4b 6e a7 41 68
  40
  解密后数据:
  使用c#编写des加密程序的framework
  des算法具有极高的安全性,到目前为止,除了用穷举搜索法对des算法进行攻击外,还没有发现更有效的办法。通过穷尽搜索空间,可获得总共256(大约7.2×1016)个可能的密钥。如果每秒能检测一百万个的话,需要2000年完成检测。可见,这是很难实现的。当然,随着科学技术的发展,当出现超高速计算机后,可以考虑把des密钥的长度再增长一些,以此来达到更高的保密程度。随着信息化和数字化社会的发展,随着计算机和inte rnet的普及,密码学必将在国家安全、经济交流、网络安全及人民生活等方面发挥更大作用。
  
  参考文献:
  [1]叶忠杰:计算机网络安全技术(第二版).科学出版社 2003.8
  [2]王宝会王大印等:新世纪计算机信息安全教程.电子工业出版社 2006.1
  [3]diffie w,hellman m. new directions in cryptography. ieee transactions on information theory,1976,22(6):644-654
  [4]张基温:信息系统安全原理.中国水利水电出版社,2005.1
  [5]顾巧论蔡振山贾春福:计算机网络安全.科学出版社,2003.1
  [6]蔡立军计算机网络安全技术.中国水利水电出版社,2002.1
  [7] .cn
本文链接:http://www.qk112.com/lwfw/jsjlw/jisuanjiyingyong/245085.html

论文中心更多

发表指导
期刊知识
职称指导
论文百科
写作指导
论文指导
论文格式 论文题目 论文开题 参考文献 论文致谢 论文前言
教育论文
美术教育 小学教育 学前教育 高等教育 职业教育 体育教育 英语教育 数学教育 初等教育 音乐教育 幼儿园教育 中教教育 教育理论 教育管理 中等教育 教育教学 成人教育 艺术教育 影视教育 特殊教育 心理学教育 师范教育 语文教育 研究生论文 化学教育 图书馆论文 文教资料 其他教育
医学论文
医学护理 医学检验 药学论文 畜牧兽医 中医学 临床医学 外科学 内科学 生物制药 基础医学 预防卫生 肿瘤论文 儿科学论文 妇产科 遗传学 其他医学
经济论文
国际贸易 市场营销 财政金融 农业经济 工业经济 财务审计 产业经济 交通运输 房地产经济 微观经济学 政治经济学 宏观经济学 西方经济学 其他经济 发展战略论文 国际经济 行业经济 证券投资论文 保险经济论文
法学论文
民法 国际法 刑法 行政法 经济法 宪法 司法制度 法学理论 其他法学
计算机论文
计算机网络 软件技术 计算机应用 信息安全 信息管理 智能科技 应用电子技术 通讯论文
会计论文
预算会计 财务会计 成本会计 会计电算化 管理会计 国际会计 会计理论 会计控制 审计会计
文学论文
中国哲学 艺术理论 心理学 伦理学 新闻 美学 逻辑学 音乐舞蹈 喜剧表演 广告学 电视电影 哲学理论 世界哲学 文史论文 美术论文
管理论文
行政管理论文 工商管理论文 市场营销论文 企业管理论文 成本管理论文 人力资源论文 项目管理论文 旅游管理论文 电子商务管理论文 公共管理论文 质量管理论文 物流管理论文 经济管理论文 财务管理论文 管理学论文 秘书文秘 档案管理
社科论文
三农问题 环境保护 伦理道德 城镇建设 人口生育 资本主义 科技论文 社会论文 工程论文 环境科学