DES算法实现过程分析.docx
- 文档编号:25799128
- 上传时间:2023-06-14
- 格式:DOCX
- 页数:6
- 大小:16.76KB
DES算法实现过程分析.docx
《DES算法实现过程分析.docx》由会员分享,可在线阅读,更多相关《DES算法实现过程分析.docx(6页珍藏版)》请在冰豆网上搜索。
DES算法实现过程分析
1. 处理密钥:
1.1从用户处获得64位密钥.(每第8位为校验位,为使密钥有正确的奇偶校验,每个密钥要有奇 数个”1”位.(本文如未特指,均指二进制位)
1.2 具体过程:
1.
2.1 对密钥实施变换,使得变换以后的密钥的各个位与原密钥位对应关系如下表所示:
表一为忽略校验位以后情况1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2857 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 60 52 44 3629 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 5663 55 47 39 31 23 15 7 62 54 46 38 30 22 14 6 61 53 45 37 29 21 13 5 28 20 12 4
1.
2.2把变换后的密钥等分成两部分,前28位记为C[0],后28位记为D[0].
1.
2.3计算子密钥(共16个),从i=1开始。
1.
2.
3.1分别对C[i-1],D[i-1]作循环左移来生成C[i],D[i].(共16次)。
每次循环左移位数 如下表所示:
循环次数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16左移位数 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1
1.
2.
3.2串联C[i],D[i],得到一个56位数,然后对此数作如下变换以产生48位子密钥K[i]。
变换过程如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2414 17 11 24 1 5 3 28 15 6 21 10 23 19 12 4 26 8 16 7 27 20 13 225 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 4841 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 32
1.
2.
3.3 按以上方法计算出16个子密钥。
2.对64位数据块的处理:
2.1把数据分成64位的数据块,不够64位的以适当的方式填补。
2.2对数据块作变换。
bit goestobit bit goestobit58 1 57 3350 2 49 3442 3 41 3534 4 33 3626 5 25 3718 6 17 3810 7 9 392 8 1 4060 9 59 4152 10 51 4244 11 43 4336 12 35 4428 13 27 4520 14 19 4612 15 11 474 16 3 4862 17 61 4954 18 53 5046 19 45 5138 20 37 5230 21 29 5322 22 21 5414 23 13 556 24 5 5664 25 63 5756 26 55 5848 27 47 5940 28 39 6032 29 31 6124 30 23 6216 31 15 638 32 7 642.3将变换后的数据块等分成前后两部分,前32位记为L[0],后32位记为R[0]。
2.4用16个子密钥对数据加密。
2.4.1根据下面的扩冲函数E,扩展32位的成48位bit goestobit bit goestobit bit goestobit bit goestobit32 1 8 13 16 25 24 371 2 9 14 17 26 25 382 3 10 15 18 27 26 393 4 11 16 19 28 27 404 5 12 17 20 29 28 415 6 13 18 21 30 29 424 7 12 19 20 31 28 435 8 13 20 21 32 29 446 9 14 21 22 33 30 457 10 15 22 23 34 31 468 11 16 23 24 35 32 479 12 17 24 25 36 1 482.4.2用E{R[i-1]}与K[i]作异或运算。
2.4.3把所得的48位数分成8个6位数。
1-6位为B[1],7-12位为B[2],……43-48位为B[8]。
2.4.4用S密箱里的值替换B[j]。
从j=1开始。
S密箱里的值为4位数,共8个S密箱2.4.4.1取出B[j]的第1和第6位串联起来成一个2位数,记为m.。
m即是S密箱里用来替换 B[j]的数所在的列数。
2.4.4.2取出B[j]的第2至第5位串联起来成一个4位数,记为n。
n即是S密箱里用来替换 B[j]的数所在的行数。
2.4.4.3用S密箱里的值S[j][m][n]替换B[j]。
8个S密箱如下所示:
--------S-BOXES1Binary d1d6=> 00 01 10 11\/d
2..d5\/ Dec0 1 2 30000 0 14 0 4 150001 1 4 15 1 120010 2 13 7 14 80011 3 1 4 8 20100 4 2 14 13 40101 5 15 2 6 90110 6 11 13 2 10111 7 8 1 11 71000 8 3 10 15 51001 9 10 6 12 111010 10 6 12 9 31011 11 12 11 7 141100 12 5 9 3 101101 13 9 5 10 01110 14 0 3 5 61111 15 7 8 0 13--------S-BOXES2binary d1d6=> 00 01 10 11\/d
2..d5\/ dec0 1 2 30000 0 15 3 0 130001 1 1 13 14 80010 2 8 4 7 100011 3 14 7 11 10100 4 6 15 10 30101 5 11 2 4 150110 6 3 8 13 40111 7 4 14 1 21000 8 9 12 5 111001 9 7 0 8 61010 10 2 1 12 71011 11 13 10 6 121100 12 12 6 9 01101 13 0 9 3 51110 14 5 11 2 141111 15 10 5 15 9--------S-BOXES3binary d1d6=> 00 01 10 11\/d
2..d5\/ dec0 1 2 30000 0 10 13 13 10001 1 0 7 6 100010 2 9 0 4 130011 3 14 9 9 00100 4 6 3 8 60101 5 3 4 15 90110 6 15 6 3 80111 7 5 10 0 71000 8 1 2 11 41001 9 13 8 1 151010 10 12 5 2 141011 11 7 14 12 31100 12 11 12 5 111101 13 4 11 10 51110 14 2 15 14 21111 15 8 1 7 12--------S-BOXES4binary d1d6=> 00 01 10 11\/d
2..d5\/ dec0 1 2 30000 0 7 13 10 30001 1 13 8 6 150010 2 14 11 9 00011 3 3 5 0 60100 4 0 6 12 100101 5 6 15 11 10110 6 9 0 7 130111 7 10 3 13 81000 8 1 4 15 91001 9 2 7 1 41010 10 8 2 3 51011 11 5 12 14 111100 12 11 1 5 121101 13 12 10 2 71110 14 4 14 8 21111 15 15 9 4 14--------S-BOXES5binary d1d6=> 00 01 10 11\/d
2..d5\/ dec0 1 2 30000 0 2 14 4 110001 1 12 11 2 80010 2 4 2 1 120011 3 1 12 11 70100 4 7 4 10 10101 5 10 7 13 140110 6 11 13 7 20111 7 6 1 8 131000 8 8 5 15 61001 9 5 0 9 151010 10 3 15 12 01011 11 15 10 5 91100 12 13 3 6 101101 13 0 9 3 41110 14 14 8 0 51111 15 9 6 14 3--------S-BOXES6binary d1d6=> 00 01 10 11\/d
2..d5\/ dec0 1 2 30000 0 12 10 9 40001 1 1 15 14 30010 2 10 4 15 20011 3 15 2 5 120100 4 9 7 2 90101 5 2 12 8 50110 6 6 9 12 150111 7 8 5 3 101000 8 0 6 7 111001 9 13 1 0 141010 10 3 13 4 11011 11 4 14 10 71100 12 14 0 1 61101 13 7 11 13 01110 14 5 3 11 81111 15 11 8 6 13--------S-BOXES7binary d1d6=> 00 01 10 11\/d
2..d5\/ dec 0 1 2 30000 0 4 13 1 60001 1 11 0 4 110010 2 2 11 11 130011 3 14 7 13 80100 4 15 4 12 10101 5 0 9 3 40110 6 8 1 7 100111 7 13 10 14 71000 8 3 14 10 91001 9 12 3 15 51010 10 9 5 6 01011 11 7 12 8 151100 12 5 2 0 141101 13 10 15 5 21110 14 6 8 9 31111 15 1 6 2 12--------S-BOXES8binary d1d6=> 00 01 10 11\/d
2..d5\/ dec0 1 2 30000 0 13 1 7 20001 1 2 15 11 10010 2 8 13 4 140011 3 4 8 1 70100 4 6 10 9 40101 5 15 3 12 100110 6 11 7 14 80111 7 1 4 2 131000 8 10 12 0 151001 9 9 5 6 121010 10 3 6 10 91011 11 14 11 13 01100 12 5 0 15 31101 13 0 14 3 51110 14 12 9 5 61111 15 7 2 8 112.4.4.4返回2.4.4.1直至8个数据块都被替换。
2.4.5把B[1]至B[8]顺序串联起来得到一个32位数。
对这个数做如下变换:
bit goestobit bit goestobit16 1 2 177 2 8 1820 3 24 1921 4 14 2029 5 32 2112 6 27 2228 7 3 2317 8 9 241 9 19 2515 10 13 2623 11 30 2726 12 6 285 13 22 2918 14 11 3031 15 4 3110 16 25 322.4.6把得到的结果与L[i-1]作异或运算。
把计算结果賦给R[i]。
2.4.7把R[i-1]的值賦给L[i]。
2.4.8从2.4.1循环执行,直到K[16]也被用到。
2.5把R[16]和L[16]顺序串联起来得到一个64位数。
对这个数实施2.2变换的逆变换。
以上就是DES算法如何加密一段64位数据块。
解密时用同样的过程,只需把16个子密钥的顺续颠倒过来,应用的顺序为K[16],K[15],K[14],。
。
。
。
K[1]。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DES 算法 实现 过程 分析