实现文件简单的加密和解密毕业论文 下载本文

内容发布更新时间 : 2024/5/1 19:24:20星期一 下面是文章的全部内容请认真阅读。

北京邮电大学毕业设计

1 绪论

1.1 论文背景

信息安全是一个综合性的交叉学科领域,广泛涉及数学、密码学、计算机、通信控制、人工智能、安全工程、人文科学等诸多学科,是近几年迅速发展的一个热点学科领域。信息对抗和网络安全是信息安全的核心热点,它的研究和发展又将刺激、推动和促进相关学科的研究与发展。

网络技术的快速发展,给我们的生活带来了方便,提高了我们的工作效率,丰富了我们的生活,但同时,安全问题也时刻困扰着我们。连接在网络上的计算机随时都有被黑客攻击的可能,在网络上收发的文件也有可能被黑客截获,而这种不安全的因素是TCP/IP协议所固有的,所以为了保护重要的文件安全,我们必须给重要的文件加密。

本论文讲述了加密技术的实现。通过数据加密,人们可以有效地保证个人数据的安全,以及在通信线路上的内容不被泄露,而且还可以检验传送信息的完整性。

1.2 主要工作

实现文件简单的加密和解密,保护数据安全。实现文件校验功能,用于验证文件的完整性和正确性。通过覆盖技术使删除的文件不可恢复,实现文件粉碎功能。设计一套完整的加密体系,在核心代码运行前优先取得程序控制权做校验工作,保护软件的安全。

1.3 本文结构

本文第一部分主要以绪论为主,说明了文章的研究背景、主要工作,概要说明了所做的工作。第二部分主要是文件加密解密的相关知识的介绍,介绍了AES算法的原理。第三部分叙述了设计的思路、重点。第四部分为设计结果及分析,将劳动成果展现给大家。第五部分为结论、致谢和参考文献,列出了文章的参考文献和引用文献,反映本文研究工作的背景和依据。

1

北京邮电大学毕业设计

2 AES介绍

2.1 AES概述

AES是一个迭代的、对称密钥分组的加密算法,即它的加密和解密过程都使用同一个密钥。AES分组密码接受一个128位的明文,并且在一个128、192、256位秘密密钥的控制下产生一个128位的密文。它是一个替代 - 置换网络的设计,并且带有一个称为轮的步骤的集合,其中轮数可以为9、11或者13(对应于128、192或者256位的密钥),这样可以将明文映射为密文。

一轮AES由下面的4步组成:

(1)字节替代 (SubBytes):用一个S盒完成分组中的按字节的代换。 (2)行移位 (ShiftRows):一个简单的置换。

(3)列混淆 (MixColumns):一个利用在域GF()上的算术特性的代换。

(4)轮密钥加 (AddRoundKey):利用当前分组和扩展密钥的一部分进行按位XOR。 每一轮分别使用它自己的128位轮密钥 (round key),它是由秘密密钥通过一个称为密钥调度 (key schedule) 的过程处理而产生的。不要低估一个设计合理的密钥调度方案的重要性。它把密钥的熵散发给每一个轮密钥。如果熵没有被很好地传播,就会产生各种麻烦,例如等价密钥、相关密钥以及其他类似的分别征服攻击 (distinguishing attack)。

AES把128位的输入看作是一个由16个字节组成的向量,并用一个4 x4的列矩阵(big-endian)的形式来组织,叫做状态(state)。即第1个字节映射为A0.0,第3个字节映射为A3.0,第4个字节为A0.1,第16个字节映射为A3.3,如图2-1所示。

A0.0 A1.0 A2.0 A3.0 A0.1 A1.1 A2.1 A3.1 A0.2 A1.2 A2.2 A3.2 A0.3 A1.3 A2.3 A3.3

图2-1 AES的状态示意图

整个AES分组密码由下面的步骤组成: (1)AddRoundKey(round=0)

(2)for round=1到Nr-1 (9、11或者13,这取决于密钥的大小)do SubBytes ShiftRows MixColumns

AddRoundKey(round)

2

北京邮电大学毕业设计

(3)SubBytes (4)ShiftRows

(5)AddRoundKey(Nr)

2.2 轮密钥加 (AddRoundKey)

轮函数的这一步是把轮密钥加到状态中(在GF(2)中)。它执行了16个并行的把密钥加到状态中的运算。GF(2)的加法是通过异或运算来完成的,如图2-2所示。

图2-2 AES AddRoundKey函数

其中的K炬阵是一个轮密钥并且对每一轮都有一个惟一的密钥。因为密钥的加法是一个简单的异或,所以它常实现为在32位软件中从列开始的一个32位的异或操作。

2.3 字节替代 (SubBytes)

轮函数的SubBtes步骤是用来执行SPN中的非线性混清步骤的。它把16个字节的每一个都并行地映射为一个新的字节,这是通过一个两步骤的替代操作来完成的,如图2-3所示。

3

北京邮电大学毕业设计

图2-3 AES SubBytes函数

该映射变化是一个简单的查表操作,AES定义了一个S盒,如表2.1所示,它是由16*16个字节组成的矩阵,包含了8位值所能表达的256种可能的变换。State中每个字节按照如下的方式映射为一个新的字节:把该字节的高4位作为行值,低4位作为列值,然后取出S盒中对应行列的元素作为输出。例如,十六进制值95所对应的S盒的行值是9,列值是5,S盒中在此位置的值是2A。相应地,95被映射为2A。

表2.1 AES的S盒

0 1 2 0 63 CA B7 04 09 53 D0 y 1 7C 82 FD C7 83 D1 EF 2 77 C9 93 23 2C 00 AA 3 7B 7D 26 C3 1A ED FB 4 F2 FA 36 18 1B 20 43 5 6B 59 3F 96 6E FC 4D 6 6F 47 F7 05 5A B1 33 7 C5 F0 CC 9A A0 5B 85 8 30 AD 34 07 52 6A 45 9 01 D4 A5 12 3B CB F9 A 67 A2 E5 80 D6 BE 02 B 2B AF F1 E2 B3 39 7F C FE 9C 71 EB 29 4A 50 D D7 A4 D8 27 E3 4C 3C E AB 72 31 B2 2F 58 9F F 76 C0 15 75 84 CF A8 x 3 4 5 6

4