范文网 > 资料大全 > 综合资料 > DES算法实现过程分析

DES算法实现过程分析

幻想 分享 更新时间:
投诉

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   &nbs

p;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  &nbs

p; 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    goes to bit    bit    goes to bit58      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     64

2.3 将变换后的数据块等分成前后两部分,前32位记为L[0],后32位记为R[0]。2.4 用16个子密钥对数据加密。2.4.1 根据下面的扩冲函数E,扩展32位的成48位

bit    goes to bit    bit    goes to bit    bit    goes to bit    bit    goes to bit32      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     48

2.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-BOXES1

Binary    d1d6 =>    00    01    10    11\/ d2..d5 \/    Dec   0     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-BOXES2

binary    d1d6 =>    00    01    10    11\/ d2..d5 \/    dec   0     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-BOXES3

binary    d1d6 =>    00    01    10    11\/ d2..d5 \/    dec   0     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 &

nbsp;  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-BOXES4

binary    d1d6 =>    00    01    10    11\/ d2..d5 \/    dec   0     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         

DES算法实现过程分析

将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档文档为doc格式