1、DES算法实现过程分析1.处理密钥:1.1从用户处获得64位密钥.(每第8位为校验位,为使密钥有正确的奇偶校验,每个密钥要有奇数个”1”位.(本文如未特指,均指二进制位)1.2具体过程:1.2.1对密钥实施变换,使得变换以后的密钥的各个位与原密钥位对应关系如下表所示:表一为忽略校验位以后情况1234567891011121314151617181920212223242526272857494133251791585042342618102595143352719113605244362930313233343536373839404142434445464748495051525354555
2、663554739312315762544638302214661534537292113528201241.2.2把变换后的密钥等分成两部分,前28位记为C0,后28位记为D0.1.2.3计算子密钥(共16个),从i=1开始。1.2.3.1分别对Ci-1,Di-1作循环左移来生成Ci,Di.(共16次)。每次循环左移位数如下表所示:循环次数12345678910111213141516左移位数11222222122222211.2.3.2串联Ci,Di,得到一个56位数,然后对此数作如下变换以产生48位子密钥Ki。变换过程如下:12345678910111213141516171819202
3、122232414171124153281562110231912426816727201322526272829303132333435363738394041424344454647484152313747553040514533484449395634534642503629321.2.3.3按以上方法计算出16个子密钥。2对64位数据块的处理:21把数据分成64位的数据块,不够64位的以适当的方式填补。22对数据块作变换。bitgoestobitbitgoestobit58157335024934423413534433362652537186173810793928140609594
4、1521051424411434336123544281327452014194612151147416348621761495418535046194551382037523021295322222154142313556245566425635756265558482747594028396032293161243023621631156383276423将变换后的数据块等分成前后两部分,前32位记为L0,后32位记为R0。24用16个子密钥对数据加密。241根据下面的扩冲函数E,扩展32位的成48位bitgoestobitbitgoestobitbitgoestobitbitgoesto
5、bit3218131625243712914172625382310151827263934111619282740451217202928415613182130294247121920312843581320213229446914212233304571015222334314681116232435324791217242536148242用ERi-1与Ki作异或运算。243把所得的48位数分成8个6位数。1-6位为B1,7-12位为B2,43-48位为B8。244用S密箱里的值替换Bj。从j=1开始。S密箱里的值为4位数,共8个S密箱2441取出Bj的第1和第6位串联起来成一个2位数
6、,记为m.。m即是S密箱里用来替换Bj的数所在的列数。2442取出Bj的第2至第5位串联起来成一个4位数,记为n。n即是S密箱里用来替换Bj的数所在的行数。2443用S密箱里的值Sjmn替换Bj。8个S密箱如下所示:-S-BOXES1Binaryd1d6=00011011/d2.d5/Dec0123000001404150001141511200102137148001131482010042141340101515269011061113210111781117100083101551001910612111010106129310111112117141100125931011011395
7、100111014035611111578013-S-BOXES2binaryd1d6=00011011/d2.d5/dec0123000001530130001111314800102847100011314711101004615103010151124150110638134011174141210008912511100197086101010211271011111310612110012126901101130935111014511214111115105159-S-BOXES3binaryd1d6=00011011/d2.d5/dec0123000001013131000110
8、761000102904130011314990010046386010153415901106156380111751007100081211410019138115101010125214101111714123110012111251111011341110511101421514211111581712-S-BOXES4binaryd1d6=00011011/d2.d5/dec0123000007131030001113861500102141190001133506010040612100101561511101106907130111710313810008141591001927
9、141010108235101111512141111001211151211011312102711101441482111115159414-S-BOXES5binaryd1d6=00011011/d2.d5/dec0123000002144110001112112800102421120011311211701004741010101510713140110611137201117618131000885156100195091510101031512010111115105911001213361011011309341110141480511111596143-S-BOXES6bin
10、aryd1d6=00011011/d2.d5/dec0123000001210940001111514300102104152001131525120100497290101521285011066912150111785310100080671110019131014101010313411011114141071100121401611011371113011101453118111115118613-S-BOXES7binaryd1d6=00011011/d2.d5/dec0123000004131600011110411001022111113001131471380100415412
11、101015093401106817100111713101471000831410910019123155101010956010111171281511001252014110113101552111014689311111516212-S-BOXES8binaryd1d6=00011011/d2.d5/dec0123000001317200011215111001028134140011348170100461094010151531210011061171480111714213100081012015100199561210101036109101111141113011001250
12、1531101130143511101412956111115728112444返回2441直至8个数据块都被替换。245把B1至B8顺序串联起来得到一个32位数。对这个数做如下变换:bitgoestobitbitgoestobit16121772818203241921414202953221126272228732317892419192515101326231130272612628513222918141130311543110162532246把得到的结果与Li-1作异或运算。把计算结果賦给Ri。247把Ri-1的值賦给Li。248从241循环执行,直到K16也被用到。25把R16和L16顺序串联起来得到一个64位数。对这个数实施22变换的逆变换。以上就是DES算法如何加密一段64位数据块。解密时用同样的过程,只需把16个子密钥的顺续颠倒过来,应用的顺序为K16,K15,K14,。K1。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1