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

上传人:李司机 文档编号:5525627 上传时间:2023-07-18 格式:DOCX 页数:10 大小:107.06KB
返回 下载 相关 举报
数据加密中的DES加密算法详解.docx_第1页
第1页 / 共10页
数据加密中的DES加密算法详解.docx_第2页
第2页 / 共10页
数据加密中的DES加密算法详解.docx_第3页
第3页 / 共10页
数据加密中的DES加密算法详解.docx_第4页
第4页 / 共10页
数据加密中的DES加密算法详解.docx_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《数据加密中的DES加密算法详解.docx》由会员分享,可在线阅读,更多相关《数据加密中的DES加密算法详解.docx(10页珍藏版)》请在三一办公上搜索。

1、数据加密中的DES加密算法详解作者:李杰李新艳张静来源:商场现代化2022年第26期摘要本文详细介绍了DES数据加密算法的原理,并给出了一个例子演示了如何使用C#中的加密包进行DES算法加密,最后对DES进行了评价。关键词加密对称非对称DES密钥明文密文从最初的保密通信发展到目前的网络信息加密,信息加密技术向来伴有着信息技术的发展而发展。作为计算机信息保护的最实用和最可靠的方法,信息加密技术被广泛应用到信息安全的各个领域。信息加密技术是一门涉及数学、密码学和计算机的交叉学科。现代密码学的发展,使信息加密技术已经再也不依赖于对加密算法本身的保密,而是通过在统计学意义上提高破解的成本来提供高加密算

2、法的安全性。密码学是一门古老而又年轻的科学,它用于保护军事和外交通信,可追溯到几千年前。1976年Diffie和Hellman的“密码学的新方向”一文引起的密码学的一场革命,开创了公钥密码学的新纪元。常用加密算法主要用来对敏感数据、摘要、签名等信息进行加密。按照密钥方式划分,可分为对称加密算法和非对称加密算法。一、对称加密算法对称加密算法有时又叫做传统密码算法,加密密钥可以从解密密钥中推导出来,解密密钥也可以从加密密钥中推导出来。在大多数的对称算法中,加密密钥和解密密钥是相同的,因此也成为秘密密钥算法或者单密钥算法。它要求发送发和接收方在安全通信之前先商定一个密钥。对称算法的安全性依赖于密钥,

3、所以密钥的保密性对通信至关重要。对称加密算法主要有分组加密和流加密两类。分组加密是指将明文分成固定商都的组,用同一密钥分别对每一组加密,输出固定长度的密文,典型代表:DES、3DESIDEAo非对称加密算法有时又叫做公开密钥算法。其中用到两个密钥。一个是公共的,一个事私有的。一个密钥用于加密,另一个密钥用于解密。两个密钥不能够互相推导。常用的非对称加密算法有RSA公钥算法、Diffie-HeiIman算法和ECC椭圆曲线密码。我们详细分析一下DES加密算法的处理过程。DES加密算法是分组加密算法,明文以64位为单位分成块。64位数据在64位密钥的控制下,经过初始变换后,进行16轮加密迭代:64

4、位数据被分成摆布两半部份,每部份32位,密钥与右半部份相结合,然后再与左半部份相结合,结果作为新的右半部份;结合前的右半部份作为新的左半部份。这一系列步骤组成一轮。这种轮换要重复16次。最后一轮之后,再进行初始置换的逆置换,就得到了64位的密文。用IDES算法融本青程DES的加密过程可分为加密处理,加密变换和子密钥生成几个部份组成。初始变换。加密处理首先要对64位的明文按表1所示的初始换位表IP进行变换。表中的数值表示输入位被置换后的新位置例如输入的第58位,在输出的时候被置换到第1位;输入的是第7位,在输出时被置换到第64位。585042342618102GO5244362820124625

5、44638302214664564840322416857494125251791595143272719113615345292921135635547313123157(2)加密处理。上述换位处理的输出,中间要经过16轮加密变换。初始换位的64位的输出作为下一次的输入,将64位分为左、右两个32位,分别记为LO和RO,从LO、RO到LI6、R16洪进行16轮加密变换。其中,经过n轮处理后的点摆布32位分别为Ln和RQ则可做如下定义:1.n=Rn-1Rn=Ln-1其中,kn是向第n轮输入的48位的子密钥,LrM和Rn-1分别是第n-1轮的输出J是Mangler函数。最后换位。进行16轮的加密

6、变换之后,将L16和R16合成64位的数据,再按照表2所示的最后换位表进行IP-1的换位,得到64位的密文,这就是DES算法加密的结果。2后除位裳P40848165624643239747155523633138646145422623037545135321612936444125220CO2835343115119692734242105018582633141949175?26通过重复某些位将32位的右半部份按照扩展表3扩展换位表扩展为48位,而56位的密钥先移位然后通过选择其中的某些位减少至48位,48位的右半部份通过异或者操作和48位的密钥结合,并分成6位的8个分组,通过8个S盒将这

7、48位替代成新的32位数据,再将其置换一次。这些S盒输入6位,输出4位。S盒如表5所示。3InK接位衰E3212345456?89891011121312131415161716171819202120212223242524262627282928293031321充4兔接位表P1672021291228171152326518311028241432273919133062211425我58个Sg筏衰X0123456789101112131415Sl014413121511891061259071015?4142131106121195382411481362111512973105031

8、5128249175119141006130123456?89101112131415S20151814611349721312051013134715281412011069115201471110413158126932153381013154211671205149X0123456T8910111213141601009146315511312T11428“113?0934610285141211151S3213649815301112125101473110130698415143115212一个S盒中具有4种替换表(行号用0、1、2、3表示),通过输入的6位的开头和末尾两位选定行,然

9、后按选定的替换表将输入的6位的中间4位进行替代,例如:当向S1输入OIlOIl时,开头和结尾的组合是01,所以选中编号为1的替代表,根据中间4位1101,选定第13列渣找表中第1行第13列所示的值为5,即输出OlOl,这4位就是经过替代后的值。按此进行,输出32位,再按照表4单纯换位表P进行变换,这样就完成为了f(R,K)的变换,如图2所示。S2每一轮DES算法纳节3.子密钥生成过程钥通常表示为64位的自然数,首先通过压缩换位PC-1去掉每一个字节的第8位,用作奇偶校验,因此,密钥去掉第8、16、2464位减至56位,所以实际密钥长度为56位,而每轮要生成48位的子密钥。输入的64位密钥,首先

10、通过压缩换位得到56位的密钥,每层分成两部份,上部份28位为COt下部份为DOoCo和DO挨次进行循环左移操作生成为了Cl和D1,将C1和D1合成56位,再通过压缩换位PC-2输出48位的子密钥K1,再将C1和D1进行循环左移和PC-2压缩换位,得到子密钥K2以此类推,得到16个子密钥。密钥压缩换位表如表6所示。在产生子密钥的过程中,L1、L2、L9、L16是循环左移1位,其余都是左移2位,左移次数如表7所示。6由的压第接位表压缩换位POl压缩幔位PC267494133251791417112415158604226183281521101025951423527231912426819113

11、6052443616T2720132635546312315415231ST4755T6254463830223040514533481466153453?294449395634532113528201244642503629327由的生成W环左移次数制层次移位次数密铜层次移位次数11912110232112421225213262142?2152821614.解密处理过程从密文到明文的解密过程可采用与加密彻底相同的算法。无非解密要用加密的逆变换,就是把上面的最后换位表和初始换位表彻底倒过来变换。这里再也不赘述。下面这个例子中演示了如何使用C#中的加密包进行DES算法加密,大家可以借助这个例

12、子一窥DES加密的用法。des_demo.cs代码如下:usingSystem;usingSystem-Security-Cryptography;usingSystemJO;usingSystem.Text;publicclassEncryptStringDESpublicstaticvoidMain(Stringargs)if(args.Length1)return;)使用UTF8函数加密输入参数UTF8Endingutf8Ending=newUTF8Encoding();byteiHputByteArray=utf8Encoding.GetBytes(args0.ToCharArray(

13、);/方式一:调用默认的DES实现方法DES_CSP.DESdes=DES.Create();/方式二:直接使用DESJ3SP()实现DES的实体/DES_CSPDES=newDES_CSP();初始化DES加密的密钥和一个随机的、8比特的初始化向量(IV)Byte11key=0x01,0x23,0x45,0x67,0x89,Oxab,Oxcd,Oxef;ByteQIV=0x12,0x34,0x56,0x78,0x90,Oxab5Oxcd,0xef);des.Key=key;des.IV=IV;/建立加密流SymmetricStreamEncryptorsse=des.CreateEncryp

14、tor();使用CryptoMemoryStream方法获取加密过程的输出CryptoMemoryStreamcms=newCryptoMemoryStreamO;将SymmetricStreamEncryptor流中的加密数据输出到CryptoMemoryStream中sse.SetSink(cms);/加密完毕,将结果输出到控制台Sse.WritefinputByteArray);sse.CloseStream();获取加密数据byte11encryptedData=cms.Data;输出加密后结果加密结果for(inti=0;iencryptedData.Length;i+)Consol

15、e.WriteLine();上面演示了如何进行加密,下面演示如何进行解密SymmetricStreamDecryptorssd=des.CreateDecryptor();cms=newCryptoMemoryStreamO;ssd.SetSink(cms);ssd.Wite(encyptedData);ssd.CloseStream();byte11decryptedData=cms.Data;CharQdecryptedCharArray=utf8Encoding.GetChars(decryptedData);解密后数据Console.Write(decryptedCharArray);

16、Console.WriteLine();编译:Microsoft(R)C#CompilerVersion7.00.8905NGWSruntime2000.14.1812.10Copyright(C)MicrosoftCorp2000.Allrightsreserved.运行实例:使用C#编写DES加密程序的framework加密结果:3D2264C657D1C4C3CF77CE2FDOE1782A4DED7AA883F90E14E1BA387B06418DB5E93F00ODC328D1F96D174B6EA7416840解密后数据:使用C#编写DES力口密程序的frameworkDES算法具

17、有极高的安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。通过穷尽搜索空间,可获得总共256(大约7.2x1016)个可能的密钥。如果每秒能检测一百万个的话,需要2000年完成检测。可见,这是很难实现的。固然,随着科学技术的发展,当浮现超高速计算机后,可以考虑把DES密钥的长度再增长一些,以此来达到更高的保密程度。随着信息化和数字化社会的发展,随着计算机和Internet的普及,密码学势必在国家安全、经济交流、网络安全及人民生活等方面发挥更大作用。参考文献:1叶忠杰:计算机网络安全技术(第二版).科学出版社2003.82王宝会王大印等:新世纪计算机信息安全教程.电子工业出版社2022.13DiffieW1HeIImanM.Newdirectionsincryptography.IEEETransactionsonInformationTheory,1976,22(6):644-6544张基温:信息系统安全原理.中国水利水电出版社,2005.1顾巧论蔡振山贾春福:计算机网络安全.科学出版社,2003.1蔡立军计算机网络安全技术.中国水利水电出版社,2002.17

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号