当前位置:文档之家› AES加密算法实验报告

AES加密算法实验报告

实验报告
学号:姓名:专业: 班级: 第10周
课程 名称
密码学与网络安全
实验课时
2
实验 项目
AES加密算法
实验时间
实验 目的
完成AES加密算法,实现图片加密与解密,并将加密后的结果以图片格式保存。
实验 环境
PC机,Windows7操作系统,Visual C++
简介
美国国家标准技术研究所在2001年发布了高级加密标准(AES。AES是— 个对称加密算法,旨在取代DES成为广泛使用的标准。
a[i] =a[i+16];
}
}
void plaintext::SubBytes( unsigned char p[16]) //字节变换函数{
unsigned char b[16];
for ( int i = 0; i<16; i++)
{
b[i] = sBox[( int ) p[i]];
} void plaintext::inSubBytes( unsigned char p[16]) //逆字节变换函数{
class pla in ntext();
static void createplaintext(unsigned char a[]);
static void SubBytes( unsigned char p[16]);
static void inSubBytes( unsigned char p[16]);
un sig ned
char b[16];
for ( int
i = 0; i<16; i++)
{
b[i] = insBox[( int ) p[i]];
}
}
void plaintext::ShiftRows( unsigned char e[]) //行移位变换函数
{
unsigned char t[4];
static
unsigned char FFmul( unsigned char a,
unsigned char b);
static
void KeyAdding( unsigned char state[16],
unsigned char k[][4]);
static
void KeyExpansion( unsigned char* key,
static void ShiftRows( unsigned char e[]);
static void inShiftRows( unsigned char e[]);
static void MatrixToByte(unsigned char e[]);
static void inMatrixToByte(unsigned char e[]);
三、加密算法流程
AES加密算法流程如下
字节代替:用一个S盒完成分组的字节到字节的代替;
行移位:进行一次行上的置换;
列混合:利用有限域GF(28)上的运算特性的一个代替;
轮密钥加:当前分组和扩展密钥的一部分进行按位异或。
四、代码实现
#in elude vstri ng>
#in elude <iostream>
{
unsigned char t[4];
for ( int i = 1; i<4; i++)
{
for (int x = 0; x<4; x++)
t[x] = e[x+i * 4];
for (int y = 0; y<4; y++)
e[(y+i)%4+i * 4] = t[y];
}
}
void plaintext::MatrixToByte( unsigned char e[]) //列混合变换函数
unsigned char w[][4][4]);
~plai ntext();
private:
};
#in elude ""
using namespacestd;
staticunsigned char sBox[] ={
};/定义加密S盒/
unsigned char insBox[256] ={};
//定义解密S盒
for (int i = 1; i<4; i++)
{
for (int x = 0; x<4; x++)
t[x] = e[x+i * 4];
for (int y = 0; y<4; y++)
e[(y+4-i)%4+i * 4] = t[y];
}
}
void plaintext::inShiftRows(unsigned char e[]) //逆行移位变换函数
pla in text::plai ntext()
{
}
void pla in text::createpla in text(un sig ned char a[]) //仓U建明文
int i = 0;
unsigned int p[16];
for (int j = 0; j<200; j++)
{
p[i] =a[i];
AES中的所有运算都是在8为的字节上运行的。特别饿,加减乘除算术都是 在有限域GF(28)上运行的。
二、程序特点
本次试验中要求对图片进行加密与解密,并将加密结果以图片格式进行保 存。因此为了实现对图片的调度及保存,使用头文件进行对图片的操作,实现 对图片的像素读取,图片的保存。
在程序运行读取需要加密的图片时, 需要进行图片的选取,本次实验中使用 在弹窗中选取文件的方式,使用头文件来实现在文件夹中选择需要的文件的选 取。
{
unsigned char t[4];
int r, c;
for (c = 0; c< 4; c++)
相关主题