- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
word格式文档
专业整理
四 川 大 学 计 算 机 学 院、软 件 学 院
实 验 报 告
学号:姓名:专业: 班级: 第 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 string
#include iostream
class plaintext
{
public:
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();
private:
};
cryptograph.cpp
#include cryptography.h
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; j200; j++)
{
if (a[j] == 0)
{
break;
}
}
for (; i16; i++)
{
p[i] = a[i];
a[i] = a[i + 16];
}
}
void plaintext::SubBytes(unsigned char p[16])//字节变换函数
{
unsigned char b[16];
for (int i = 0; i16; i++)
{
b[i] = sBox[(int)p[i]];
}
}
void plaintext::inSubBytes(unsigned char p[16])//逆字节变换函数
{
unsigned char b[16];
for (int i = 0; i16; i++)
{
b[i] = insBox[(int)p[i]];
}
}
void plainte
您可能关注的文档
- 《牧场之国》ppt__人版四年级语文(下册).ppt
- 《童年的朋友》高尔基优秀课件.ppt
- 《永远的蝴蝶》说课课件修改.ppt
- 2.4初等变换与初等矩阵.ppt
- 5万吨年柑橘精深加工技术集成与产业化项目.doc
- 12某工程索道架设工程施工设计方案.doc
- 14_联通智慧楼宇项目解决方案.ppt
- 35KV集电线路安全施工措施方案.doc
- 660MW超临界火力发电热力系统分析报告.doc
- 830泛渠道会议材料[徐州公司]终稿.ppt
- 2024年内蒙古乌兰察布盟企业人力资源管理师之一级人力资源管理师考试题库及答案解析.docx
- 2024年内蒙古阿拉善盟企业人力资源管理师之一级人力资源管理师考试题库大全附答案【突破训练】.docx
- 2024年内蒙古伊克昭盟企业人力资源管理师之一级人力资源管理师考试(培优B卷).docx
- 2024年内蒙古乌海市企业人力资源管理师之一级人力资源管理师考试题库精品带答案.docx
- 2024年江苏省淮阴市企业人力资源管理师之一级人力资源管理师考试大全带答案下载.docx
- 2024年江西省吉安市企业人力资源管理师之四级人力资源管理师考试精选题库含答案解析.docx
- 2024年江西省上饶市企业人力资源管理师之四级人力资源管理师考试题库附参考答案(基础题).docx
- 2024年江苏省淮阴市企业人力资源管理师之四级人力资源管理师考试完整题库加下载答案.docx
- 2024年江西省宜春市企业人力资源管理师之四级人力资源管理师考试通关秘籍题库附答案【综合题】.docx
- 2024年河北省唐山市企业人力资源管理师之四级人力资源管理师考试内部题库及答案【精选题】.docx
最近下载
- 《GB∕T 27914-2023 风险管理 法律风险管理指南》解读和应用指导材料(雷泽佳编写2024A0-PDF).pdf
- 高考语文专项复习标点符号.ppt VIP
- 2024三上科学知识点期末复习资料.pdf VIP
- 成人经鼻高流量湿化氧疗(HFNC)理论知识考试题及答案.doc
- 2024上海中考英语试题及答案.doc VIP
- 高边坡专项施工方案.doc VIP
- 北京邮电大学《数字信号处理》门爱东-DSP03-离散傅里叶变换及其快速计算方法.ppt VIP
- 2024上海中考语文卷.docx VIP
- 《新托福考试专项进阶——初级写作》教育.pdf
- 《小学语文第一学段多文本阅读议题确立的策略研究》课题研究方案.doc
文档评论(0)