des加解密算法详解

上传人:第*** 文档编号:30582834 上传时间:2018-01-30 格式:DOC 页数:12 大小:161.50KB
返回 下载 相关 举报
des加解密算法详解_第1页
第1页 / 共12页
des加解密算法详解_第2页
第2页 / 共12页
des加解密算法详解_第3页
第3页 / 共12页
des加解密算法详解_第4页
第4页 / 共12页
des加解密算法详解_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《des加解密算法详解》由会员分享,可在线阅读,更多相关《des加解密算法详解(12页珍藏版)》请在金锄头文库上搜索。

1、DES 加解密算法入 口 参 数 有 三 个 :key、 data、 mode。 key 为 加 密 解 密 使 用 的 密 钥 , data为 加 密 解 密 的 数 据 , mode 为 其 工 作 模 式 。 当 模 式 为 加 密 模 式 时 , 明 文 按 照 64位 进 行 分 组 , 形 成 明 文 组 , key 用 于 对 数 据 加 密 , 当 模 式 为 解 密 模 式 时 , key用 于 对 数 据 解 密 。 实 际 运 用 中 , 密 钥 只 用 到 了 64 位 中 的 56 位 , 这 样 才 具 有 高的 安 全 性 。 DES( Data Encrypti

2、on Standard)算 法 , 于 1977 年 得 到 美 国 政 府 的 正 式 许可 , 是 一 种 用 56 位 密 钥 来 加 密 64 位 数 据 的 方 法 。 虽 然 56 位 密 钥 的 DES 算 法已 经 风 光 不 在 ,而 且 常 有 用 Des 加 密 的 明 文 被 破 译 的 报 道 ,但 是 了 解 一 下 昔 日 美国 的 标 准 加 密 算 法 总 是 有 益 的 ,而 且 目 前 DES 算 法 得 到 了 广 泛 的 应 用 ,在 某 些 场合 ,仍 然 发 挥 着 余 热 。DES (Data Encryption Standard),是 IBM

3、 在上个世纪 70 年代开发的单密钥对称加解密算法。该算法利用一个 56+8 奇偶校验位(第 8, 16, 24, 32, 40, 48, 56, 64 位)=64 位的密钥对以 64 位为单位的块数据进行加解密。1、子密钥的生成过程:用户输入密码时其长度不受限制,当用户输入的密码长度为 0 时,使用缺省 64 位密码,当输入的密码长度大于 8 字节时,前 8 个字节为有效密码。我们在加密时设定的密钥先被转化成 64 比特的二进制,然后再按照密钥置换函数 PC-1(8x7)进行压缩置换,变成 56 位,将其置换的输出再分为前 28 位 C0 和后 28位 D0 两部分。然后再将此两部分进行 1

4、6 轮的循环左移及压缩置换 PC-2(8X6),最后生成 16 个 48 位的字密钥。1.1压缩置换到 56 位假设有密钥 K(64 位) = 133457799BBCDFF1,即:K(64 位) = 00010011 00110100 01010111 01111001 10011011 10111100 11011111 11110001 其中加粗标注第 8 位、第 16 位、第 24 位、第 32 位、第 40 位、第 48 位、第56 位、第 64 位作为奇偶校验位,不参与运算,即实际密钥为 56 位。对 K(64 位)使用 PC-1(87)进行置换,去掉了个校验位。表 1密钥置换函数

5、 PC-1(8x7)57 49 41 33 25 17 91 58 50 42 34 26 1810 2 59 51 43 35 2719 11 3 60 52 44 3663 55 47 39 31 23 157 62 54 46 38 30 2214 6 61 53 45 37 29PC-121 13 5 28 20 12 4从而,由K(64 位) = 00010011 00110100 01010111 01111001 10011011 10111100 11011111 11110001得到K (56 位) = 1111000 0110011 0010101 010111101010

6、10 1011001 1001111 00011111.2C0 和 D0 的分类经过 PC-1 置换后,将其置换的输出再分为前 28 位 C0 和后 28 位 D0 两部分,如图所示。图密钥置换输出的分法C0(28 位) = 1111000 0110011 0010101 0101111 D0(28 位) = 0101010 1011001 1001111 0001111 1.3循环左移 16 轮再将两部分按照表 2 进行 16 轮的循环左移。表 2每轮移动的位数迭代顺序 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

7、2 2 2 2 2 2 1C1 和 D1 分别为 C0 和 D0 左移 1 位C3 和 D3 分别为 C2 和 D2 左移 2位C16 和 D16 分别为 C15 和 D15 左移 1 位。 从而得到 C1D1 C16D16:C1 = 1110000 1100110 0101010 1011111D1 = 1010101 0110011 0011110 0011110C2 = 1100001 1001100 1010101 0111111D2 = 0101010 1100110 0111100 0111101C3 = 0000110 0110010 1010101 1111111D3 = 01

8、01011 0011001 1110001 1110101C4 = 0011001 1001010 1010111 1111100D4 = 0101100 1100111 1000111 1010101 1.4压缩置换到 48 位每进行一轮循环左移,就按照表 4 进行压缩置换,得到一个子密钥。即置换后的输出数据的位数要比置换前输入的位数要少,原来的 8 行 7 列共 56 位数据被压缩成 8 行 6 列 48 位数据。在压缩置换过程中,第 9、18、22、25、35、38、43、54共 8 位数据被丢掉。表 3压缩置换 PC-2(8x6)14 17 11 24 1 53 28 15 6 21

9、1023 19 12 4 26 816 7 27 20 13 241 52 31 37 47 5530 40 51 45 33 4844 49 39 56 34 53PC-246 42 50 36 29 32置换过程如图 2 所示图 2 子密钥 Kn 的产生Kn(48 位) = PC-2( CnDn(56 位) )最终得到所有 16 个子密钥,每个 48 位:K1 = 000110 110000 001011 101111 111111 000111 000001 110010 K2 = 011110 011010 111011 011001 110110 111100 100111 1001

10、01K3 = 010101 011111 110010 001010 010000 101100 111110 011001K4 = 011100 101010 110111 010110 110110 110011 010100 011101K5 = 011111 001110 110000 000111 111010 110101 001110 101000K6 = 011000 111010 010100 111110 010100 000111 101100 101111K7 = 111011 001000 010010 110111 111101 100001 100010 1111

11、00K8 = 111101 111000 101000 111010 110000 010011 101111 111011K9 = 111000 001101 101111 101011 111011 011110 011110 000001K10 = 101100 011111 001101 000111 101110 100100 011001 001111K11 = 001000 010101 111111 010011 110111 101101 001110 000110K12 = 011101 010111 000111 110101 100101 000110 011111 1

12、01001K13 = 100101 111100 010111 010001 111110 101011 101001 000001K14 = 010111 110100 001110 110111 111100 101110 011100 111010K15 = 101111 111001 000110 001101 001111 010011 111100 001010K16 = 110010 110011 110110 001011 000011 100001 011111 1101012、加密DES 算 法 是 对 固 定 大 小 (64 位 )的 数 据 块 进 行 加 密 解 密

13、操 作 的 ,对 于 那 些不 够 64 位 的 数 据 块 需 要 采 用 填 充 机 制 补 位 到 64 位 长 。 设该明文串为M=m1m2m64 (mi=0 或 1)。明文串经过长度都为 48 比特的 16 个子密钥 K 来加密,最后生成长度为 64 比特的密文 E。2.1IP 初始置换假设有明文 M(64 位) = 0123456789ABCDEF,即M(64 位) = 0000 0001 0010 0011 0100 0101 0110 01111000 1001 1010 1011 1100 1101 1110 1111则按下表进行位置的置换表 4初始置换函数 IP(8x8)5

14、8 50 42 34 26 18 10 260 52 44 36 28 20 12 462 54 46 38 30 22 14 664 56 48 40 32 24 16 857 49 41 33 25 17 9 1IP59 51 43 35 27 19 11 361 53 45 37 29 21 13 563 55 47 39 31 23 15 7对 M 运用 IP 置换后得IP(64 位) = 1100 1100 0000 0000 1100 1100 1111 11111111 0000 1010 1010 1111 0000 1010 1010 该比特串被分为 32 位的左半部分 L0

15、 和 32 位的右半部分 R0 两部分,用于 f 函数的16 轮迭代运算的首次迭代的初始输入。L0 (32 位) = 1100 1100 0000 0000 1100 1100 1111 1111 R0 (32 位) = 1111 0000 1010 1010 1111 0000 1010 1010 2.2加密数据2.2.1 将数据的右半部分 R0 通过扩展置换 E 从 32 位扩展为 48 位通过将原 32 位数据中的某些位重复出现达到扩展的目的。扩展置换也称位选择函数,俗称 E 盒。扩展置换(E)通过将第32、1、4、5、8、9、12、13、16、17、20、21、24、25、28、29

16、共 16 位分别放置在两个位置,从而将 32 位的数据扩展为 48 位。2.2.2 扩展后的 48 位与 K1 进行异或2.2.3 异或后的结果通过 S 盒子转换为 32 位将异或运算得到的 48 位结果数据分成 8 个 6 位的块,将每一块通过对应的一个S 盒产生一个 4 位的输出。S 盒接收 6 位的输入,经过置换输出 4 位的数据,其具体置换过程为:将 6 位输入中的第 1 位和第 6 位取出来形成一个 2 位的二进制数 x,将其转化为十进制作为行数,然后将中间 4 位构成另一个二进制数 y,将其转化为十进制作为列数,然后查出 S 的 x 行 y 列所对应的整数,将该整数置换为一个 4 位的二进制数,即为 S 盒的输出。例如,假设输入数据中的第一个 6 位数字块为010111,则需要通过查 S1 盒,先取出 010111 的第 1 位和第 6 位,则 x01,其对应的十进制数为 1。然后取出中间的 4 位 1011,则 y1011,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 外语文库 > 英语学习

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号