没有合适的资源?快使用搜索试试~ 我知道了~
实验一 基于DES加密的TCP聊天程序1
需积分: 0 44 下载量 158 浏览量
2022-08-03
13:46:27
上传
评论 2
收藏 604KB PDF 举报
温馨提示
试读
35页
第3章 基于 DES 加密的 TCP 聊天程序3.1 本章训练目的与要求DES(Data Encryption Standard)算法是一种用 56 位有效密钥
资源详情
资源评论
资源推荐
第
3
章
基于
DES
加密的
TCP
聊天程序
3.1
本章训练目的与要求
DES(Data Encryption Standard)算法是一种用 56 位有效密钥来加密 64 位数据的对称
分组加密算法,该算法流程清晰,已经得到了广泛的应用,算是应用密码学中较为基础的加
密算法。TCP(传输控制协议)是一种面向链接的、可靠的传输层协议。TCP 协议在网络层
IP 协议的基础上,向应用层用户进程提供可靠的、全双工的数据流传输。
本章训练的目的如下。
①理解 DES 加解密原理。
②理解 TCP 协议的工作原理。
③掌握 linux 下基于 socket 的编程方法。
本章训练的要求如下。
①利用 socket 编写一个 TCP 聊天程序。
②通信内容经过 DES 加密与解密。
3.2
相关背景知识
3.2.1 DES
算法的历史
上个世纪六七十年代,随着计算机在通信网络中的应用,对信息处理设备标准化的要求
也越来越迫切,加密产品作为信息安全的核心,自然也有标准化需求。
1973 年,NBS 发布了公开征集标准密码算法的请求,并 确 定 了 一 系 列 的 设 计 准 则 如下。
(1) 算法应具有较高的安全性;$
(2) 算法必须是完全确定,没有含糊之处;$
(3) 算法的安全性必须完全依赖于密钥;$
(4) 对于任何用户必须是不加区分的;$
(5) 用于实现算法的电子器件必须经济实惠。$
1974 年,IBM(美国商用电器公司)向 NBS 提交了由 Tuchman 博士领导的小组设计并
经改造的 Lucifer 算法。NSA(美国国家安全局)组织专家对该算法进行了鉴定,使其成为
DES 的基础。
1975 年 NBS 公布了这个算法,并说明要以它作为联邦信息加密标准,征求各方意见。
1976 年,DES 被采纳作为联邦标准,并授权在非机密的政府通信中使用。DES 在银行、
金融界崭露头角,随后得到广泛应用。
DES 系统于 1977 年被正式批准,并于同年 7 月 15 日宣布生效,长期来一直被美国政
府、军队广泛使用。1988 年里根政府宣布 DES 算法服役期满(一般指十年)而转为民用,
后来又被美国商界和世界其他国家采用。
1981 年 ANSI(美国国家标准技术研究所)将其作为数据加密标准,称之为 DEA(ANSI
X3.92)。 1983 年 ISO(国际标准化组织)采用其作为标准,称为 DEA-1。
1984 年美国总统签署 145 号国家安全决策令(NSDD), 命 令 NSA 着手发展新的加密标
准,用于政府系统非机密数据和私人企事业单位。NSA 宣布每隔 5 年对 DES 重新审议一次,
以坚定其是否还适合继续作为联邦标准。1994 年 1 月,宣布要延续到 1998 年。
1990 年,在 Eurocrypt(欧洲密码年会)上,以色列密码学家 Shamir 提出了针对 DES
的“差分分析法”。1993 年,仍然是在 Eurocrypt 上,Matsui 提出“线性分析法”。
1997 年,ANSI 开始征集 AES(高级加密标准)。2000 年,选定比利时人 Joan Daemen
和 Vincent Rijmen 设计的 Rijndael 算法作为新的标准。
虽然 DES 已不再作为数据加密标准,但它仍然值得研究和学习。首先三重 DES 算法仍
在 Internet 中广泛使用,如 PGP 和 S/MIME 中都使用了三重 DES 作为加密算法。其次 DES
是历史上最为成功的一种分组密码算法,它的使用时间之久,范围之大,是其它分组密码算
法不能企及的,而 DES 的成功则归功于其精巧的设计和结构,学习 DES 算法的细节有助于
读者深入了解分组密码的设计方法,理解如何通过算法实现混乱和扩散准则,从而快速的掌
握分组密码的本质问题。
3.2.2 DES
算法细节
DES 明文分组长度为 64bit(不足 64 bit 的部分用 0 补齐),密文分组长度也是 64bit。
加密过程要经过 16 圈迭代。初始密钥长度为 64 bit,但其中有 8 bit 奇偶校验位,因此有效
密钥长度是 56 bit,子密钥生成算法产生 16 个 48 bit 的子密钥,在 16 圈迭代中使用。解密
与加密采用相同的算法,并且所使用的密钥也相同,只是各个子密钥的使用顺序不同。
DES 算法的全部细节都是公开的,其安全性完全依赖于密钥的保密。算法包括初始置
换 IP、逆初始置换 IP
-1
、16 轮迭代以及子密钥生成算法。
1
.
初始置换
IP
将 64 bit 的明文重新排列,而后分成左右两块,每块 32bit,用 L
0
和 R
0
表示。IP 置换表
如表 2-1 所示。通过对该表进行观察可以发现其中相邻两列的元素位置号数相差 8,前 32
个元素均为偶数号码,后 32 个均为奇数号码,这样的置换相当于将明文的各字节按列写出,
各列经过偶采样和奇采样置换后,再对其进行逆序排列,将阵中元素按行读出以便构成置换
的输出。
表 2-1 IP 置换表
58
50
42
34
26
18
10
2
60
52
44
36
28
20
12
4
62
54
46
38
30
22
14
6
64
56
48
40
32
24
16
8
57
49
41
33
25
17
9
1
59
51
43
35
27
19
11
3
61
53
45
37
29
21
13
5
2
.
逆初始置换
IP
-1
在 16 圈迭代之后,将左右两端合并为 64bit,进行逆初始置换 IP
-1
,得到输出的 64bit
密文。如表 2-2 所示。
表 2-2 逆初始置换表
输出的 64bit 为表中元素按行读出的结果。
IP 和 IP
-1
的输入与输出是已知的一一对应关系,它们的作用在于打乱原来输入的 ASCII
码字划分,并将原来明文的校验位 p
8
,p
16
,…,p
64
变为 IP 输出的一个字节。
3
.
16
轮迭代
16 轮迭代是 DES 算法的核心部分。将经过 IP 置换后的数据分成 32bit 的左右两段,进
行 16 圈迭代,每轮迭代只对右边的 32bit 进行一系列的加密变换,在一轮加密变换结束时,
将左边的 32bit 与右边进行异或后得到的 32bit,作 为 下 一 轮 迭 代 时 右 边 的 段 ,并 将 这轮迭代
中的右边段未经任何加密变换时的初始值直接作为下一轮迭代时左边的段,这 需 要 在 每 轮 迭
代开始时,先将右边段保存一个副本,以便在该轮迭代结束时,将该副本直接赋值给下一轮
迭代的左边段。在每轮迭代时,右边的数据段要经过的加密运算包括选择扩展运算 E、密钥
加运算、选择压缩运算 S 和置换 P,这些变换合称 f 函数。
(1) 选择扩展运算$
选择扩展运算(也称为 E 盒)的目的是将输入的右边 32bit 扩展成为 48bit 输出,其变
换表如表 2-3 所示。置换结果按行输出的结果即为密钥加运算 48bit 的输入。
表 2-3 选择扩展运算变换表
63
55
47
39
31
23
15
7
40
8
48
16
56
24
64
32
39
7
47
15
55
23
63
31
38
6
46
14
54
22
62
30
37
5
45
13
53
21
61
29
36
4
44
12
52
20
60
28
35
3
43
11
51
19
59
27
34
2
42
10
50
18
58
26
33
1
41
9
49
17
57
25
32
1
2
3
4
5
4
5
6
7
8
9
8
9
10
11
12
13
12
13
14
15
16
17
16
17
18
19
20
21
20
21
22
23
24
25
24
25
26
27
28
29
(2) 密钥加运算$
密钥加运算,是将选择扩展运算输出的 48bit 作为输入,与 48bit 的子密钥进行异或运
算,异或结果作为选择压缩运算(S 盒)的输入。
(3) 选择压缩运算$
选择压缩运算(S 盒)是 DES 算法中唯一的非线性部分,它是一个查表运算,共有 8
张非线性的变换表,如表 2-4 至 2-11 所示,每张表的输入为 6bit,输 出 为 4bit。在 查 表 之 前 ,
将密钥加运算的输出作为 48bit 输入,将其分为 8 组,每组 6bit,分别进入 8 个 S 盒进行运
算,得出 32bit 的输出结果作为置换运算的输入。
表 2-4 选择压缩运算变换表
表 2-5 选择压缩运算变换表
表 2-6 选择压缩运算变换表
28
29
30
31
32
1
1
2
3
4
5
6
7
8
1-8
0xe
0x0
0x4
0xf
0xd
0x7
0x1
0x4
9-16
0x2
0xe
0xf
0x2
0xb
0xd
0xb
0xe
17-24
0x3
0xa
0xa
0x6
0x6
0xc
0xc
0xb
25-32
0x5
0x9
0x9
0x5
0x0
0x3
0x7
0x8
33-40
0x4
0xf
0x1
0xc
0xe
0x8
0x8
0x2
41-48
0xd
0x4
0x6
0x9
0x2
0x1
0xb
0x7
49-56
0xf
0x5
0xc
0xb
0x9
0x3
0x7
0xe
57-64
0x3
0xa
0xa
0x0
0x5
0x6
0x0
0xd
1
2
3
4
5
6
7
8
1-8
0xf
0x3
0x1
0xd
0x8
0x4
0xe
0x7
9-16
0x6
0xf
0xb
0x2
0x3
0x8
0x4
0xf
17-24
0x9
0xc
0x7
0x0
0x2
0x1
0xd
0xa
25-32
0xc
0x6
0x0
0x9
0x5
0xb
0xa
0x5
33-40
0x0
0xd
0xe
0x8
0x7
0xa
0xb
0x1
41-48
0xa
0x3
0x4
0xf
0xd
0x4
0x1
0x2
49-56
0x5
0xb
0x8
0x6
0xc
0x7
0x6
0xc
57-64
0x9
0x0
0x3
0x5
0x2
0xe
0xf
0x9
1
2
3
4
5
6
7
8
1-8
0xa
0xd
0x0
0x7
0x9
0x0
0xe
0x9
9-16
0x6
0x3
0x3
0x4
0xf
0x6
0x5
0xa
17-24
0x1
0x2
0xd
0x8
0xc
0x5
0x7
0xe
25-32
0xb
0xc
0x4
0xb
0x2
0xf
0x8
0x1
33-40
0xd
0x1
0x6
0xa
0x4
0xd
0x9
0x0
41-48
0x8
0x6
0xf
0x9
0x3
0x8
0x0
0x7
49-56
0xb
0x4
0x1
0xf
0x2
0xe
0xc
0x3
表 2-7 选择压缩运算变换表
表 2-8 选择压缩运算变换表
表 2-9 选择压缩运算变换表
表 2-10 选择压缩运算变换表
57-64
0x5
0xb
0xa
0x5
0xe
0x2
0x7
0xc
1
2
3
4
5
6
7
8
1-8
0x7
0xd
0xd
0x8
0xe
0xb
0x3
0x5
9-16
0x0
0x6
0x6
0xf
0x9
0x0
0xa
0x3
17-24
0x1
0x4
0x2
0x7
0x8
0x2
0x5
0xc
25-32
0xb
0x1
0xc
0xa
0x4
0xe
0xf
0x9
33-40
0xa
0x3
0x6
0xf
0x9
0x0
0x0
0x6
41-48
0xc
0xa
0xb
0xa
0x7
0xd
0xd
0x8
49-56
0xf
0x9
0x1
0x4
0x3
0x5
0xe
0xb
57-64
0x5
0xc
0x2
0x7
0x8
0x2
0x4
0xe
1
2
3
4
5
6
7
8
1-8
0x2
0xe
0xc
0xb
0x4
0x2
0x1
0xc
9-16
0x7
0x4
0xa
0x7
0xb
0xd
0x6
0x1
17-24
0x8
0x5
0x5
0x0
0x3
0xf
0xf
0xa
25-32
0xd
0x3
0x0
0x9
0xe
0x8
0x9
0x6
33-40
0x4
0xb
0x2
0x8
0x1
0xc
0xb
0x7
41-48
0xa
0x1
0xd
0xe
0x7
0x2
0x8
0xd
49-56
0xf
0x6
0x9
0xf
0xc
0x0
0x5
0x9
57-64
0x6
0xa
0x3
0x4
0x0
0x5
0xe
0x3
1
2
3
4
5
6
7
8
1-8
0xc
0xa
0x1
0xf
0xa
0x4
0xf
0x2
9-16
0x9
0x7
0x2
0xc
0x6
0x9
0x8
0x5
17-24
0x0
0x6
0xd
0x1
0x3
0xd
0x4
0xe
25-32
0xe
0x0
0x7
0xb
0x5
0x3
0xb
0x8
33-40
0x9
0x4
0xe
0x3
0xf
0x2
0x5
0xc
41-48
0x2
0x9
0x8
0x5
0xc
0xf
0x3
0xa
49-56
0x7
0xb
0x0
0xe
0x4
0x1
0xa
0x7
57-64
0x1
0x6
0xd
0x0
0xb
0x8
0x6
0xd
1
2
3
4
5
6
7
8
1-8
0x4
0xd
0xb
0x0
0x2
0xb
0xe
0x7
9-16
0xf
0x4
0x0
0x9
0x8
0x1
0xd
0xa
17-24
0x3
0xe
0xc
0x3
0x9
0x5
0x7
0xc
25-32
0x5
0x2
0xa
0xf
0x6
0x8
0x1
0x6
剩余34页未读,继续阅读
lirumei
- 粉丝: 67
- 资源: 301
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- ### 词向量的介绍、使用技巧和优缺点的文章
- 基于STM32F103CBT6单片机GC65+MP2625+CC1101 GPSTrack模块板硬件(原理图+PCB)工程文件
- ### 通道处理过程模拟概念、优缺点和使用技巧
- ### MyBatis动态SQL介绍说明、使用技巧和优缺点
- 上传下载仿163网盘无刷新文件上传 for Jsp-fileupload-jsp.rar
- VMware Workstation业界非常稳定且安全的桌面虚拟机软件-计算机上运行多个操作系统,支持Windows、DOS等
- 基于STM8L101F3P6单片机+LY2508A33P+CC1100遥控器硬件(原理图+PCB)工程文件.zip
- 上传下载WAP图铃下载系统-unimg.rar
- YTX-0.1.0-Win
- 上传下载ExtJS 2.2 开源网络硬盘系统-dogdisk.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0