DES算法达成过程剖析

点击数:830 | 发布时间:2025-02-27 | 来源:www.9bjc.com

    1.处置密钥:
    1.1从用户处获得64位密钥.
    1.2具体过程:
    1.2.1对密钥推行变换,使得变换未来的密钥的每个位与原密钥位对应关系如下表所示:
    表一为忽视校验位将来状况

    12 3 4 5 6 7 8 910111213141516171819202122232425262728
    574941332517 9 158504234261810 259514335271911 360524436
    29303132333435363738394041424344454647484950515253545556
    63554739312315 762544638302214 661534537292113 5282012 4

    1.2.2把变换后的密钥等分成两部分,前28位记为C[0], 后28位记为D[0].
    1.2.3计算子密钥, 从i=1开始。
    1.2.3.1 分别对C[i-1],D[i-1]作循环左移来生成C[i],D[i].。每次循环左移位数
    如下表所示:

    循环次数12345678910111213141516
    左移位数112222221 2 2 2 2 2 2 1

    1.2.3.2 串联C[i],D[i],得到一个56位数,然后对此数作如下变换以产生48位子密钥K[i]。
    变换过程如下:

    12 3 4 5 6 7 8 9101112131415161718192021222324
    14171124 1 5 32815 62110231912 426 816 7272013 2
    252627282930313233343536373839404142434445464748
    415231374755304051453348444939563453464250362932

    1.2.3.3按以上办法计算出16个子密钥。


    2.对64位数据块的处置:
    2.1 把数据分成64位的数据块,不够64位的以适合的方法填补。
    2.2对数据块作变换。

    bitgoes to bitbitgoes to bit
    581 57 33
    502 49 34
    423 41 35
    344 33 36
    265 25 37
    186 17 38
    1079 39
    2 81 40
    609 59 41
    52 10 51 42
    44 11 43 43
    36 12 35 44
    28 13 27 45
    20 14 19 46
    12 15 11 47
    4163 48
    62 17 61 49
    54 18 53 50
    46 19 45 51
    38 20 37 52
    30 21 29 53
    22 22 21 54
    14 23 13 55
    6245 56
    64 25 63 57
    56 26 55 58
    48 27 47 59
    40 28 39 60
    32 29 31 61
    24 30 23 62
    16 31 15 63
    8327 64

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

    bitgoes to bitbitgoes to bitbitgoes to bitbitgoes to bit
    3218 13 16 25 24 37
    1 29 14 17 26 25 38
    2 3 10 15 18 27 26 39
    3 4 11 16 19 28 27 40
    4 5 12 17 20 29 28 41
    5 6 13 18 21 30 29 42
    4 7 12 19 20 31 28 43
    5 8 13 20 21 32 29 44
    6 9 14 21 22 33 30 45
    710 15 22 23 34 31 46
    811 16 23 24 35 32 47
    912 17 24 25 361 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

    Binaryd1d6 =>00011011
    / d2..d5 /Dec 0 1 2 3
    0000 0 14 0 415
    0001 1415 112
    0010 2 13 714 8
    0011 31 4 8 2
    0100 421413 4
    0101 5 15 2 6 9
    0110 6 1113 2 1
    0111 78 111 7
    1000 831015 5
    1001 9 10 61211
    101010612 9 3
    101111 1211 714
    1100125 9 310
    1101139 510 0
    1110140 3 5 6
    1111157 8 013

    --------
    S-BOXES2

    binaryd1d6 =>00011011
    / d2..d5 /dec 0 1 2 3
    0000 0 15 3 013
    0001 111314 8
    0010 28 4 710
    0011 3 14 711 1
    0100 461510 3
    0101 5 11 2 415
    0110 63 813 4
    0111 7414 1 2
    1000 8912 511
    1001 97 0 8 6
    1010102 112 7
    101111 1310 612
    110012 12 6 9 0
    1101130 9 3 5
    111014511 214
    111115 10 515 9

    --------
    S-BOXES3

    binaryd1d6 =>00011011
    / d2..d5 /dec 0 1 2 3
    0000 0 101313 1
    0001 10 7 610
    0010 29 0 413
    0011 3 14 9 9 0
    0100 46 3 8 6
    0101 53 415 9
    0110 6 15 6 3 8
    0111 7510 0 7
    1000 81 211 4
    1001 9 13 8 115
    101010 12 5 214
    10111171412 3
    110012 1112 511
    11011341110 5
    11101421514 2
    1111158 1 712

    --------
    S-BOXES4

    binaryd1d6 =>00011011
    / d2..d5 /dec 0 1 2 3
    0000 071310 3
    0001 1 13 8 615
    0010 2 1411 9 0
    0011 33 5 0 6
    0100 40 61210
    0101 561511 1
    0110 69 0 713
    0111 7 10 313 8
    1000 81 415 9
    1001 92 7 1 4
    1010108 2 3 5
    1011115121411
    110012 11 1 512
    110113 1210 2 7
    111014414 8 2
    111115 15 9 414

    --------
    S-BOXES5

    binaryd1d6 =>00011011
    / d2..d5 /dec 0 1 2 3
    0000 0214 411
    0001 1 1211 2 8
    0010 24 2 112
    0011 311211 7
    0100 47 410 1
    0101 5 10 71314
    0110 6 1113 7 2
    0111 76 1 813
    1000 88 515 6
    1001 95 0 915
    10101031512 0
    101111 1510 5 9
    110012 13 3 610
    1101130 9 3 4
    111014 14 8 0 5
    1111159 614 3

    --------
    S-BOXES6

    binaryd1d6 =>00011011
    / d2..d5 /dec 0 1 2 3
    0000 0 1210 9 4
    0001 111514 3
    0010 2 10 415 2
    0011 3 15 2 512
    0100 49 7 2 9
    0101 5212 8 5
    0110 66 91215
    0111 78 5 310
    1000 80 6 711
    1001 9 13 1 014
    101010313 4 1
    10111141410 7
    110012 14 0 1 6
    11011371113 0
    1110145 311 8
    111115 11 8 613

    --------
    S-BOXES7

    binaryd1d6 =>00011011
    / d2..d5 /dec01 2 3
    0000 0413 1 6
    0001 1 11 0 411
    0010 22111113
    0011 3 14 713 8
    0100 4 15 412 1
    0101 50 9 3 4
    0110 68 1 710
    0111 7 131014 7
    1000 831410 9
    1001 9 12 315 5
    1010109 5 6 0
    101111712 815
    1100125 2 014
    110113 1015 5 2
    1110146 8 9 3
    1111151 6 212

    --------
    S-BOXES8

    binaryd1d6 =>00011011
    / d2..d5 /dec 0 1 2 3
    0000 0 13 1 7 2
    0001 121511 1
    0010 2813 414
    0011 34 8 1 7
    0100 4610 9 4
    0101 5 15 31210
    0110 6 11 714 8
    0111 71 4 213
    1000 8 1012 015
    1001 99 5 612
    1010103 610 9
    101111 141113 0
    1100125 015 3
    110113014 3 5
    111014 12 9 5 6
    1111157 2 811

    2.4.4.4 返回2.4.4.1直至8个数据块都被替换。
    2.4.5 把B[1]至B[8] 顺序串联起来得到一个32位数。对这个数做如下变换:

    bitgoes to bitbitgoes to bit
    16 1 2 17
    72 8 18
    20 324 19
    21 414 20
    29 532 21
    12 627 22
    28 7 3 23
    17 8 9 24
    1919 25
    151013 26
    231130 27
    2612 6 28
    5 1322 29
    181411 30
    3115 4 31
    101625 32

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



  • THE END

    声明:本站部分内容均来自互联网,如不慎侵害的您的权益,请告知,我们将尽快删除。

专业院校

返回顶部

Copyright©2018-2024 国家人事考试网(https://www.scxhcf.com/)
All Rights Reserverd ICP备18037099号-1

  • 国家人事考试网微博

  • 国家人事考试网

首页

财经

建筑

医疗