编程实现AES算法的加密解密过程

上传人:公**** 文档编号:557007971 上传时间:2022-11-28 格式:DOC 页数:19 大小:333KB
返回 下载 相关 举报
编程实现AES算法的加密解密过程_第1页
第1页 / 共19页
编程实现AES算法的加密解密过程_第2页
第2页 / 共19页
编程实现AES算法的加密解密过程_第3页
第3页 / 共19页
编程实现AES算法的加密解密过程_第4页
第4页 / 共19页
编程实现AES算法的加密解密过程_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《编程实现AES算法的加密解密过程》由会员分享,可在线阅读,更多相关《编程实现AES算法的加密解密过程(19页珍藏版)》请在金锄头文库上搜索。

1、信息安全工程课程实验报告编程实现AES算法的加密解密过程课程名称:信息安全工程学生姓名:学生学号:专业班级:任课教师:蔡忠闽 目录1 背景与意义32 实验要求33.系统设计43.1系统主要目标43.2主要软件需求(运行环境)44 AES算法加密和解密原理分析44.1加密过程基本变换64.2解密过程基本变换64.3密钥扩展算法75.系统功能程序设计76. 测试报告176.1 加密176.2 解密197 实验总结211 背景与意义科技的发展使计算机深入到了我们生活的的方方面面,计算机在带来方便和提高了工作效率的同时却也带来了各种各样的新问题,其中信息安全问题最为突出,随着计算机信息安全要求的不断提

2、高, 计算机保密系统已变得越来越重要,所以我们需要一种较为可靠的加密算法来保护我们信息的安全。由于DES已经无法满足高保密性的要求,美国于1997年1月开始征集新一代数据加密标准(即高级数据加密标准,Advanced Encryption Standard,AES)。2000年10月2日,正式宣布选择比利时密码学家所开发的Rijndael算法成为AES的最终算法。AES(The Advanced Encryption Standard)是美国国家标准与技术研究所用于加密电子数据的规范。它被预期能成为人们公认的加密包括金融、电信和政府数字信息的方法。AES 是一个新的可以用于保护电子数据的加密算

3、法。明确地说,AES 是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位密钥,并且用 128 位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入 数据相同。迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据。该算法为比利时密码学家Joan Daemen和Vincent Rijmen所设计,结合两位作者的名字,以Rijndael之命名之,投稿高级加密标准的甄选流程。(Rijdael的发音近于 Rhine doll。)AES在软体及硬件上都能快速地加解密,相对来说较易于实作

4、,且只需要很少的记忆体。作为一个新的加密标准,目前正被部署应用到更广大的范围.2 实验要求(1)一人一组 (2)AES算法加密和解密原理分析 (3)提交完整的源程序(使用网络上的现成程序一定要注明出处) (4)提交程序的设计,说明文档 (5)用ECB和分组链模式CBC,对给定内容进行加密和解密,提交解密结果,并提交实验心得,着重阐述对实验的理解(6)程序调试成功后,处理以下内容:A、AES 加密明文:各自的姓名+邮箱秘钥:各自的手机号B、AES解密密文:邮箱附件给出秘钥:(给出秘钥为ASCII码形式,请将ASCII码转为二进制,不满128位在其后补零):130729810633.系统设计3.1

5、系统主要目标1在深入理解AES加密/解密算法理论的基础上,设计一个AES加密/解密软件系统;2完成一个明文分组的加解密,明文和密钥是十六进制,输入明文和密钥,输出密文,进行加密后,能够进行正确的解密;3. 按要求提供所设计系统的报告及完整的软件。3.2主要软件需求(运行环境)本软件适用VC语言编写,编译成功后的EXE文件可以在装有windows系统的任何计算机上使用。测试平台:Windows 8使用软件:Visual Studio 2012/C+4 AES算法加密和解密原理分析AES是一个迭代的、对称密钥分组的密码,它可以使用128、192和256位密钥长度,并且用128位分组长度加密和解密数

6、据2。该算法输入分组、输出分组、状态长度均为128比特。对于AES算法的运算是在一个称为状态的二维字节数组上进行。一个状态由四行组成,每一行包括Nb个字节,Nb等于分组长度除以32,AES分组长度为128位,因此,Nb=4,该值反应了状态中32-bit字的个数(列数);密钥长度128、192和256位可分别表示为Nk=4、6或8,反应了密钥中32-bit字的个数(列数)。而AES算法的轮数Nr仅依赖于密钥长度Nk,轮数和密钥长度的关系可以表示为:Nr=6+Nk。密钥长度分组长度轮数的关系如表1所示。表1 Key-Block-Round关系密钥长度(Nk words)分组长度(Nb words)

7、轮数(Nr)441064128414对于加密和解密变换,AES算法使用的轮函数由4个不同的以字节为基本单位的变换复合而成,该过程由四个不同的阶段组成3:(1)S盒变换,用一个S盒完成分组中的按字节代替;(2)行移位变换,一个简单的置换;(3)列混淆变换,一个利用在域GF(28) 上的算术性的代替;(4)轮密钥加变换,一个利用当前分组和扩展密钥的一个部分进行按位异或。AES对数据的加密过程是通过把输入的明文和密钥由轮函数经Nr轮迭代来实现的,结尾轮与前Nr-1轮不同。前Nr-1轮依次进行S盒变换、行移位变换、列混淆变换和轮密钥加变换;结尾轮与前Nr-1轮相比去掉了列混淆变换。而解密过程与加密过程

8、相反,通过把输入的密文和密钥由轮函数经Nr轮迭代来实现的,结尾轮与前Nr-1轮不同。前Nr-1轮依次进行逆行移位变换、逆S盒变换、轮密钥加变换和逆列混淆变换;结尾轮与前Nr-1轮相比去掉了逆列混淆变换。AES算法的加密解密过程如图1所示:图1 AES加密解密流程4.1加密过程基本变换(1) S盒变换S盒变换是一个基于S盒的非线性置换,它用于输入或中间态的每一个字节通过一个简单的查表操作,将其映射为另一个字节。映射方法是:把输入字节的高4位作为S盒的行值,低4位作为列值,然后取出S盒中对应行和列的元素作为输出。例如,输入为“89”(十六进制)的值所对应的S盒的行值为“8”,列值为“9”,S盒中相

9、应位置的值为“a7”,就说明“89”被映射为“87”。 (2) 列混淆变换列混淆变换实现逐列混淆,其方法是: 其中,内的数表示是字节。用矩阵表示为(3) 行移位变换行移位变换完成基于行的循环移位操作,即行移位变换的作用在中间态的行上,第0行不动,第1行循环左移1个字节,第2行循环左移2个字节,第3行循环左移3个字节。(4) 轮密钥加变换轮密钥加变换用于将输入或中间态S的每一列与一个密钥字Wi进行按位异或,其中, 由原始密钥通过密钥扩展算法产生。4.2解密过程基本变换解密过程是加密的逆过程,S盒变换、行移位变换、列混淆变换都要进行求逆变换,即逆S盒变换、逆行移位变换、逆列混淆变换。而轮密钥加变换

10、与加密过程相同。(1) 逆S盒变换与S盒变换类似,逆S盒变换是基于逆S盒实现的。(2) 逆行移位变换与行移位变换相反,逆行移位变换将态State的后三行按相反的方向进行移位操作,即第0行保持不变,第1行向右移1个字节,第2行向右移2个字节,第3行向右移3个字节。(3) 逆列混淆变换逆列混淆变换的处理方法与列混淆变换类似,每一列都通过与一个固定的多项相乘进行变换。写为矩阵乘法的形式,逆列混淆变换按以下方式对列进行变换:4.3密钥扩展算法AES加密解密过程中,每一轮都需要一个与输入分组具有相同长度的扩展密钥Wi的参与。由于外部输入的加密密钥长度有限,所以在算法中要用一个密钥扩展程序把外部密钥扩展成

11、更长的比特串,以生成各轮的加密和解密密钥。通过生成器产生Nr+1轮轮密钥,每个轮密钥由Nb个字组成,共有Nb(Nr+1)个字Wi,i=0,1,Nb(Nr+1)-1。5.系统功能程序设计(代码参考自CSDN论坛)#include StdAfx.h#include (AES加解密).h#include#include#includebyte in4Nb; /in数组用于读入需要或解密的数据byte key4Nk; /key数组用于读入初始密钥 byte wNr+1Nk4; /w数组用于保存所有扩展后的密钥 /S盒byte S_box256=0x63,0x7c,0x77,0x7b,0xf2,0x6b

12、,0x6f,0xc5,0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76,0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0,0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0,0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc,0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15,0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a,0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75,0x09,0x83

13、,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0,0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84,0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b,0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf,0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85,0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8,0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5,0xbc,0xb6,0xda,0x21,0x10,0xff

14、,0xf3,0xd2,0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17,0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73,0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88,0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb,0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c,0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79,0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9,0x6c,0x56

15、,0xf4,0xea,0x65,0x7a,0xae,0x08,0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6,0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a,0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e,0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e,0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94,0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf,0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68,0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16;/逆S盒byte InvS_bo

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

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