- 3
- 0
- 约1.62万字
- 约 20页
- 2018-09-11 发布于湖北
- 举报
密码学实验报告w9ytjksx
目录
TOC \o 1-3 \h \z \u HYPERLINK \l _Toc360287303 AES加密算法实现 PAGEREF _Toc360287303 \h 2
HYPERLINK \l _Toc360287304 一. 实验目的 PAGEREF _Toc360287304 \h 2
HYPERLINK \l _Toc360287305 二. 实验原理 PAGEREF _Toc360287305 \h 2
HYPERLINK \l _Toc360287306 三. 实验步骤 PAGEREF _Toc360287306 \h 2
HYPERLINK \l _Toc360287307 四. 实验结果 PAGEREF _Toc360287307 \h 6
HYPERLINK \l _Toc360287308 五. 实验心得 PAGEREF _Toc360287308 \h 8
HYPERLINK \l _Toc360287309 六. 源代码: PAGEREF _Toc360287309 \h 9
HYPERLINK \l _Toc360287310 RSA加解密算法实现 PAGEREF _Toc360287310 \h 18
HYPERLINK \l _Toc360287311 一.实验目的: PAGEREF _Toc360287311 \h 18
HYPERLINK \l _Toc360287312 二.实验要求: PAGEREF _Toc360287312 \h 18
HYPERLINK \l _Toc360287313 三.RSA函数主要代码 PAGEREF _Toc360287313 \h 18
HYPERLINK \l _Toc360287314 四.运算结果显示: PAGEREF _Toc360287314 \h 21
HYPERLINK \l _Toc360287315 五.实验心得 PAGEREF _Toc360287315 \h 21
AES加密算法实现
实验目的
1.深入理解AES加密/解密算法理论的基础上,设计一个AES加密/解密软件系统;
2.完成一个明文分组的加解密,明文和密钥是十六进制,长度都为128比特(32个16进制数),输入明文和密钥,输出密文,进行加密后,能够进行正确的解密;
实验原理
AES的区块长度固定为128 HYPERLINK /view/189728.htm \t _blank 比特,密钥长度则可以是128,192或256比特;
大多数AES计算是在一个特别的 HYPERLINK /view/953638.htm \t _blank 有限域完成的。
AES加密过程是在一个4×4的 HYPERLINK /view/60408.htm \t _blank 字节矩阵上运作,这个矩阵又称为“状态矩阵”,其初值就是一个明文区块(矩阵中一个元素大小就是明文区块中的一个Byte)。加密时,各轮AES加密循环(除最后一轮外)均包含4个步骤:
1.SubBytes — 通过一个非线性的替换函数,用 HYPERLINK /view/1627735.htm \t _blank 查找表的方式把每个字节替换成对应的字节。
2.ShiftRows — 将矩阵中的每个行进行循环式移位。
3.MixColumns — 列混淆。这个步骤使用线性转换来混合每列的四个字节。
4.AddRoundKey — 矩阵中的每一个字节都与该次回合轮密钥(round key)做XOR运算;每个子密钥由密钥生成方案产生。
实验步骤
(一)加密
1.密钥生成
void keyexpansion(unsigned char S_BOX[][16],unsigned char keys[][44]){
unsigned char Rcon[11] = {0,1,2,4,8,16,32,64,128,27,54};
unsigned char past[4];
register int i,j;
//打开密钥文件
if((fp=fopen(Key.txt,r))==NULL)
{
printf(CAN NOT OPEN THE FILE!\n);
return ;
}
printf(\n请输入密钥!\n);
for(i = 0;i = 3;i ++)
for(j = 0;j = 3;j ++)
{
fscanf(fp,%02x,keys[j][i]);
printf(%02x ,keys[j][i]);
}
for(i = 4;i = 43;i ++){ //make the other
原创力文档

文档评论(0)