DES算法加密过程的探讨_李少芳

  • 格式:pdf
  • 大小:154.10 KB
  • 文档页数:4

文章编号:1006-2475(2006)08-0102-03收稿日期:2005-09-23作者简介:李少芳(1971-),女,福建福安人,莆田学院电子信息工程系讲师,硕士,研究方向:串行算法。

DES 算法加密过程的探讨李少芳(莆田学院电子信息工程系,福建莆田 351100)摘要:DES 算法广泛应用于信用卡持卡人的PIN 的加密传输、IC 卡与POS 间的双向认证、金融交易数据包的MAC 校验等领域,用以实现关键数据的保密。

本文以一实例详析DES 算法的加密过程,并讨论其安全性。

关键词:DES 算法;加密过程;安全性中图分类号:TP309.7 文献标识码:ADiscussion of DES Algorithm .s Encrypting CourseLI Shao -fang(Electronic Information Engineeri ng Department of Putian College,Putian 351100,China)Abstract:DES algorithm is extensively applied to many fields,including encrypti ng transmission of credit card holder .s PIN,two -way au thentication between IC card and POS,the MAC check -up of data chartering about financial transaction,etc.It is used to realize the keeping secret of key data.This paper analyses the encryp ting course of DES algorithm in details with an instance,and discusses its se -curity.Key words:DES algorithm;encrypti on course;securi ty1 DES 算法概述数据加密标准(DES )))Data Encryption Standard)是美国国家标准局于1977年颁布的由IB M 公司研制的一种非机密数据的正式数据加密标准。

DES 是一种采用传统的替换和移位的方法加密的分组密码,算图1 DES 加密原理示意法是对称的,既可用于加密又可用于解密。

它用56位密钥对64位二进制数据块进行加密,每次加密可对64位的明文输入进行16轮编码,经一系列替换和移位后,输出完全不同的64位密文数据。

其入口参数有三个:Key 、Data 、Mode,其中Key 为7个字节共56位,是DES 算法的工作密钥;Data 为8个字节64位,是要被加密或被解密的数据;Mode 为DES 的工作方式,有两种:加密或解密。

由于DES 算法仅使用最大为64位的标准算术和逻辑运算,运算速度快,密钥生产容易,适合于在当前大多数计算机上用软件方法实现,同时也适合于在专用芯片上实现。

2 DES 算法加密原理DES 算法的加密过程大致可分成四步:初始置换(IP 处理)、迭代过程、子密钥生成和逆置换(IP -1处理),功能是把输入的64位数据块经初始置换按位重新组合,并把输出分为L0、R0两部分,每部分各32位,L1=R0,R1=L0Ýf(R0,K1)。

DES 加密原理示意图见图1。

3 DES 算法加密过程举例把待加密的数据分成64位的数据块,这里说明计算机与现代化2006年第8期JISUANJI YU XIANDAIHUA总第132期两点:¹对超过64位的加密和解密,美国联邦信息处理标准PUB81中规定有四种方法。

一种称ECB mode(Electronic Codebook mode),是连续的对每个数据块进行上述操作;一种称为CBC mode(Cipher Block Chaining mode),是在加密前,用前述的密文块对明文块进行异或操作;还有另两种方法是OFB mode(Out-put Feedback mode)和CFB mode(Cipher Feedback mode)。

º当数据块不足64位时要以适当的方式进行数据块填充,有以下几种选择:一种就是填0;第二种是美国联邦信息处理标准P UB81所建议的,如果数据是二进制的,就填入和数据位最后一位相反的数;如果数据块是ASCII码,就填入随机字节,并且将填充数目写入最后一个字节;第三种是填入随机字节,并且将原数据字节数写入最后的三位(bit)。

假如明文M=/SEC URI TY0,密钥K=/COM-PUTE0,它们对应的ASCII码分别用二进制表示为: M=(01010011010001010100001101010101 01010010010010010101010001011001)2K=(01000011010011110100110101010000 010101010101010001000101)2这里K只有56位,为使密钥有正确的奇偶校验,必须在每第8位处插入校验位,使每字节有奇数个/10位,即在第8、16、24、,、64位处添加奇偶校验位构成64位的K c。

K c=(01000011101001111101001110101011 00000100101010110101000110001010)2(1)明文M的初始置换。

表1初始置换585012342618102605244362820124 625446383022146645648403224168 57494133251791595143352719113 615345372921135635547393123157表2选择置换157494133251791585042342618 10259514335271911360524436 635547393123157625446383022 1466153453729211352820124设置换前M的输入值为m1m2m3...m64,则按M 的IP表(表1)初始置换后的输出结果为:左32位L0 =m58m50...m8;右32位R0=m57m49...m7,即将输入的第58位换到第一位,第50位换到第2位,...,依此类推,最后一位是原来的第7位。

L0=11111111110110010100101010101111R0=00000000000000001010000000010101表3K各轮移动位数表k迭代轮数12345678910111213141516循环左移位数1122222212222221(2)子密钥(K1、K2、,、K16)的生成。

表4选择置换21417112415328156211023191242681672720132415231374755304051453348444939563453464250362932表5扩展置换3212345456789891011121312131415161716171819202120212223242524252627282928293031221表6S盒变换表0123456789101112131415 S101441312151183106125907101574142131106121195382411481362111512973105031512824917511314100613 S201518146113497213120510131347152814120110691152014711104131581269321531381013154211671205149 S301009146315511312711428113709346102851412111512136498153011121251014731101306987415143115212 S407131430691012851112415113811561503472121101492106901211713151314528433150610113894511127214 S502124171011685315130149114112124713150151039862421111013781591256301431181271142136150910453 S601211015926801334147511110154271295611314011382914155281237041011311634321295151011141760813 S704112141508133129751061113011749110143512215862141113123714101568059236111381410795015142312 S80132846151111093145012711151381037412561101492271141912142061013153583211474108131512903561164位的密钥K c经选择置换1(表2)后,Key的位数由64位变成了56位,此56位分为C0、D0两部分,各28位,具体的输出结果为:左28位C0=101011100100010100101010 0100;右28位D0=101011110001001010100000 0100。

因为是第一次迭代,把C0、D0循环左移1位(16次循环左移对应的左移位数由表3给出)得到C1、D1。

C1=0101110010001010010101001001;D1=0101111000100101010000001001。

将C1(28位)、D1(28位)合并得到56位,经选择置换2(表4)后得到48位子密钥K1。

接着对C1、D1按表3所示循环左移1次(第二次迭代)生成C2、D2,串联C2、D2,得到一个56位数,然后对此数进行选择置换2(表4)产生48位子密钥K2。

依此类推,直到计1032006年第8期李少芳:DES算法加密过程的探讨算出16个子密钥。

(3)加密迭代过程。

¹R0的扩展置换。

将32位的R0经表5扩展置换后得到48位的E(R0)。

º48位数据A的生成。

将E(R0)与子密钥K1进行异或运算后得到48位数据A,A=100001011100 000100000110010100100010101101011011。

»32位数据B的生成(S盒变换)。

将A分为8组,每组6位,这8组分别通过S1、S2、,、S8被称为S 盒的变换(表6)后把每组6位数据变为4位数据,从而由48位数据A生成32位数据B。