DES算法实现过程分析.docx

上传人:b****9 文档编号:25799128 上传时间:2023-06-14 格式:DOCX 页数:6 大小:16.76KB
下载 相关 举报
DES算法实现过程分析.docx_第1页
第1页 / 共6页
DES算法实现过程分析.docx_第2页
第2页 / 共6页
DES算法实现过程分析.docx_第3页
第3页 / 共6页
DES算法实现过程分析.docx_第4页
第4页 / 共6页
DES算法实现过程分析.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

DES算法实现过程分析.docx

《DES算法实现过程分析.docx》由会员分享,可在线阅读,更多相关《DES算法实现过程分析.docx(6页珍藏版)》请在冰豆网上搜索。

DES算法实现过程分析.docx

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]。

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

当前位置:首页 > 农林牧渔 > 农学

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

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