数据加密中的DES加密算法详解Word格式.docx

上传人:b****5 文档编号:18977118 上传时间:2023-01-02 格式:DOCX 页数:4 大小:18.10KB
下载 相关 举报
数据加密中的DES加密算法详解Word格式.docx_第1页
第1页 / 共4页
数据加密中的DES加密算法详解Word格式.docx_第2页
第2页 / 共4页
数据加密中的DES加密算法详解Word格式.docx_第3页
第3页 / 共4页
数据加密中的DES加密算法详解Word格式.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据加密中的DES加密算法详解Word格式.docx

《数据加密中的DES加密算法详解Word格式.docx》由会员分享,可在线阅读,更多相关《数据加密中的DES加密算法详解Word格式.docx(4页珍藏版)》请在冰豆网上搜索。

数据加密中的DES加密算法详解Word格式.docx

对称算法的安全性依赖于密钥,所以密钥的保密性对通信至关重要。

对称加密算法主要有分组加密和流加密两类。

分组加密是指将明文分成固定商都的组,用同一密钥分别对每一组加密,输出固定长度的密文,典型代表:

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加密的用法。

  des_代码如下:

  usingSystem;

  using;

  publicclassEncryptStringDES{

  publicstaticvoidMain(String[]args){

  if( 1){

  ("

Usage:

des_demo

  encrypt"

args[0]);

  return;

  }

  //使用UTF8函数加密输入参数

  UTF8Encodingutf8Encoding=newUTF8Encoding();

  byte[]inputByteArray=(args

  [0].ToCharArray());

  //方式一:

调用默认的DES实现方法DES_CSP.

  DESdes=();

  //方式二:

直接使用DES_CSP()实现DES的实体

  //DES_CSPDES=newDES_CSP();

  //初始化DES加密的密钥和一个随机的、8比特的初始化向量(IV)

  Byte[]key={0x01,0x23,0x45,0x67,0x89,0xab,

  0xcd,0xef};

  Byte[]IV={0x12,0x34,0x56,0x78,0x90,0xab,

   =key;

   =IV;

  //建立加密流

  SymmetricStreamEncryptorsse=();

  //使用CryptoMemoryStream方法获取加密过程的输出

  CryptoMemoryStreamcms=newCryptoMemoryStream();

  //将SymmetricStreamEncryptor流中的加密数据输出到

  CryptoMemoryStream中

  (cms);

  //加密完毕,将结果输出到控制台

  (inputByteArray);

  ();

  //获取加密数据

  byte[]encryptedData=;

  //输出加密后结果

加密结果:

"

);

  for(inti=0;

i ;

i++){

{0:

X2}"

encryptedData[i]);

  //上面演示了如何进行加密,下面演示如何进行解密

  SymmetricStreamDecryptorssd=();

  cms=newCryptoMemoryStream();

  (encryptedData);

  byte[]decryptedData=;

  char[]decryptedCharArray=(decryptedData);

解密后数据:

  (decryptedCharArray);

}

  编译:

  D:

“csharpcscdes_

  Microsoft(R)C#CompilerVersion [NGWSruntime

  ]

  Copyright(C)MicrosoftCorp2000.Allrightsreserved.

  运行实例:

“csharpdes_使用C#编写DES加密程序的framework

  加密结果:

  3D2264C657D1C4C3CF77CE2FD0E1782A4DED7AA8

  83F90E14E1BA38

  7B06418DB5E93F000DC328D1F96D174B6EA74168

  40

  解密后数据:

  使用C#编写DES加密程序的framework

  DES算法具有极高的安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。

通过穷尽搜索空间,可获得总共256(大约×

1016)个可能的密钥。

如果每秒能检测一百万个的话,需要2000年完成检测。

可见,这是很难实现的。

当然,随着科学技术的发展,当出现超高速计算机后,可以考虑把DES密钥的长度再增长一些,以此来达到更高的保密程度。

随着信息化和数字化社会的发展,随着计算机和Internet的普及,密码学必将在国家安全、经济交流、网络安全及人民生活等方面发挥更大作用。

  参考文献:

  [1]叶忠杰:

计算机网络安全技术(第二版).科学出版社 

  王宝会王大印等:

新世纪计算机信息安全教程.电子工业出版社 

  DiffieW,HellmanM.Newdirectionsincryptography.IEEETransactionsonInformationTheory,1976,22(6):

644-654

  张基温:

信息系统安全原理.中国水利水电出版社,

  顾巧论蔡振山贾春福:

计算机网络安全.科学出版社,

  蔡立军计算机网络安全技术.中国水利水电出版社,

  http:

//

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1