好文档 - 专业文书写作范文服务资料分享网站

AES加密算法实验报告

天下 分享 时间: 加入收藏 我要投稿 点赞

四 川 大 学 计 算 机 学 院、软 件 学 院

实 验 报 告

学号:姓名:专业: 班级: 第 10 周

课程名称 密码学与网络安全 实验课时 2 实验项目 AES加密算法 实验时间 2015.5.7 实验完成AES加密算法,实现图片加密与解密,并将加密后的结果以图片格式保存。 目的 实验环境 PC机,Windows7操作系统,Visual C++ 6.0 一、简介 美国国家标准技术研究所在2001年发布了高级加密标准(AES)。AES是一个对称加密算法,旨在取代DES成为广泛使用的标准。 AES中的所有运算都是在8为的字节上运行的。特别饿,加减乘除算术都是在有限域GF(28)上运行的。 二、程序特点 本次试验中要求对图片进行加密与解密,并将加密结果以图片格式进行保存。因此为了实现对图片的调度及保存,使用头文件atlimage.h进行对图片的操作,实现对图片的像素读取,图片的保存。 在程序运行读取需要加密的图片时,需要进行图片的选取,本次实验中使用在弹窗中选取文件的方式,使用头文件commdlg.h来实现在文件夹中选择需要的实验文件的选取。 内容(算三、加密算法流程 法、AES加密算法流程如下程序、步骤和方法) 字节代替:用一个S盒完成分组的字节到字节的代替; 行移位:进行一次行上的置换; 列混合:利用有限域GF(28)上的运算特性的一个代替; 轮密钥加:当前分组和扩展密钥的一部分进行按位异或。 四、代码实现 cryptograph.h

#include #include class plaintext { public: private: };

~plaintext();

static void createplaintext(unsigned char a[]); static void SubBytes(unsigned char p[16]); static void inSubBytes(unsigned char p[16]); static void ShiftRows(unsigned char e[]); static void inShiftRows(unsigned char e[]); static void MatrixToByte(unsigned char e[]); static void inMatrixToByte(unsigned char e[]);

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, unsigned char w[][4][4]); plaintext();

cryptograph.cpp

#include \ using namespace std;

static unsigned char sBox[] = {};/定义加密S盒/ unsigned char insBox[256] ={};//定义解密S盒 plaintext::plaintext() { }

void plaintext::createplaintext(unsigned char a[])//创建明文 {

}

int i = 0;

unsigned int p[16]; for (int j = 0; j<200; j++) { }

for (; i<16; i++) { }

p[i] = a[i]; a[i] = a[i + 16]; if (a[j] == 0) { }

break;

void plaintext::SubBytes(unsigned char p[16])//字节变换函数 { }

void plaintext::inSubBytes(unsigned char p[16])//逆字节变换函数 { }

void plaintext::ShiftRows(unsigned char e[])//行移位变换函数 {

unsigned char t[4]; unsigned char b[16]; for (int i = 0; i<16; i++) { }

b[i] = insBox[(int)p[i]]; unsigned char b[16]; for (int i = 0; i<16; i++) { }

b[i] = sBox[(int)p[i]];

}

void plaintext::inShiftRows(unsigned char e[])//逆行移位变换函数 { }

void plaintext::MatrixToByte(unsigned char e[])//列混合变换函数 {

unsigned char t[4]; int r, c;

for (c = 0; c< 4; c++) { }

for (r = 0; r<4; r++) { }

for (r = 0; r<4; r++) { }

e[r * 4 + c] = FFmul(0x02, t[r])

^ FFmul(0x03, t[(r + 1) % 4]) ^ FFmul(0x01, t[(r + 2) % 4]) ^ FFmul(0x01, t[(r + 3) % 4]); t[r] = e[r * 4 + c];

for (int i = 1; i<4; i++) { }

for (int x = 0; x<4; x++)

t[x] = e[x + i * 4]; e[(y + i) % 4 + i * 4] = t[y]; for (int y = 0; y<4; y++) unsigned char t[4]; for (int i = 1; i<4; i++) { }

for (int x = 0; x<4; x++)

t[x] = e[x + i * 4];

e[(y + 4 - i) % 4 + i * 4] = t[y]; for (int y = 0; y<4; y++)

AES加密算法实验报告

四川大学计算机学院、软件学院实验报告学号:姓名:专业:班级:第10周课程名称密码学与网络安全实验课时2实验项目AES加密算法实验时间2015.5.7实验完成AES加密算法,实现图片加密与解密,并将加密后的结果以图片格式保存。目的实验环境PC机,Windo
推荐度:
点击下载文档文档为doc格式
4tzdz0talr3pebe0ildf
领取福利

微信扫码领取福利

微信扫码分享