中南大学现代密码学实验报告材料.docx
- 文档编号:2369543
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:25
- 大小:578.21KB
中南大学现代密码学实验报告材料.docx
《中南大学现代密码学实验报告材料.docx》由会员分享,可在线阅读,更多相关《中南大学现代密码学实验报告材料.docx(25页珍藏版)》请在冰豆网上搜索。
中南大学现代密码学实验报告材料
现代密码学
实验报告
学生姓名代巍
学号0909121615
专业班级信息安全1201
指导教师段桂华
学院信息科学与工程学院
完成时间2014年5月
实验一对称密码算法实验
[实验目的]
1.掌握密码学中经典的对称密码算法DES、AES、RC4的算法原理。
2.掌握DES、AES、RC4的算法流程和实现方法。
[实验预备]
1.DES算法有什么特点?
算法中的哪些结构保证了其混淆和扩散的特性?
2.AES算法的基本原理和特点。
3.流密码RC4的密钥流生成以及S盒初始化过程。
[实验内容]
1.分析DES、AES、RC4、SHA的实现过程。
2.用程序设计语言将算法过程编程实现。
3.完成字符串数据的加密运算和解密运算
输入明文:
Idolikethisbook
输入密钥:
cryption
[实验步骤]
1.预习DES、AES、RC4算法。
2.写出算法流程,用程序设计语言将算法过程编程实现。
3.输入指定的明文、密钥进行实验,验证结果。
4.自己选择不同的输入,记录输出结果。
写出所编写程序的流程图和运行界面、运行结果。
一、DES算法
1.DES算法及原理
DES密码实际上是Lucifer密码的进一步发展。
它是一种采用传统加密方法的区组密码。
它的算法是对称的,既可用于加密又可用于解密。
美国国家标准局1973年开始研究除国防部外的其它部门的计算机系统的数据加密标准,于1973年5月15日和1974年8月27日先后两次向公众发出了征求加密算法的公告。
加密算法要达到的目的通常称为DES密码算法要求主要为以下四点:
提供高质量的数据保护,防止数据XX的泄露和未被察觉的修改;具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又要便于理解和掌握DES密码体制的安全性应该不依赖于算法的保密,其安全性仅以加密密钥的保密为基础实现经济,运行有效,并且适用于多种完全不同的应用。
目前在这里,随着三金工程尤其是金卡工程的启动,DES算法在POS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收费站等领域被广泛应用,以此来实现关键数据的保密,如信用卡持卡人的PIN的加密传输,IC卡与POS间的双向认证、金融交易数据包的MAC校验等,均用到DES算法。
DES算法的入口参数有三个:
Key、Data、Mode。
其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:
加密或解密。
DES算法是这样工作的:
如Mode为加密,则用Key去把数据Data进行加密,生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。
在通信网络的两端,双方约定一致的Key,在通信的源点用Key对核心数据进行DES加密,然后以密码形式在公共通信网(如电话网)中传输到通信网络的终点,数据到达目的地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。
这样,便保证了核心数据(如PIN、MAC等)在公共通信网中传输的安全性和可靠性。
通过定期在通信网络的源端和目的端同时改用新的Key,便能更进一步提高数据的保密性,这正是现在金融交易网络的流行做法。
DES算法流程图
子密钥产生流程图
2.DES算法加密解密过程
(1)加密过程。
a.初始置换。
DES的第一阶段包括64位分组的置换,改变每个分组中位的顺序。
术语置换使用其严格的数学意义;只改变了顺序。
这64位数据现在被分成两半:
L0(左半部分)和R0(右半部分)。
下标0说明是原始的数据。
在DES算法第二阶段的每次循环后,这些下标加1。
b.循环移位(16次)
一种根据密钥,并且依赖于表格的算法。
这种操作通常被称为数据移位。
这个算法要重复16次,但由于每次移位都使用密钥的不同子分组,因此每次移位的操作各不相同。
密钥的子分组由另一组表格和表格的移位算法来确定。
在每次循环以后,L(左半部分)和R(右半部分)的下标依次加一。
第16次循环的结果被称为预输出。
c.逆置换
DES的最后一个阶段包括64位分组的置换,改变每个分组中位的顺序,这与第1阶段的操作类似。
这次置换的输出结果就是密文。
(2)解密过程
DES的解密过程和加密过程相同,只是在解密过程中将子密钥的使用顺序颠倒。
3.DES算法C++实现
模块化设计(囿于篇幅,举几个代表的例子)
(1)二进制转换(将输入的字符串转化为比特数组)
voiderjinzhi(charz[8],int*q)
{
charch;
inti,j,a=7;
for(i=0;i<8;i++)
{
ch=z[i];
for(j=0;j<8;j++)
{
*(q+a)=ch%2;
ch=ch/2;
a--;
}
a=a+16;
}
for(i=0;i<=63;i++)
{
if(i%8==0)printf("");
printf("%d",*(q+i));
}
printf("\n");
}
(2)密钥生成时CD移位
voidLS_yiwei(int(*p)[28],inti)
{
intj;
if(i==1||i==2||i==9||i==16)
{
for(j=0;j<=27;j++)
{
if(j==27)
*(*(p+i)+j)=*(*(p+i-1)+0);
else
*(*(p+i)+j)=*(*(p+i-1)+j+1);
}
}
else
{
for(j=0;j<=27;j++)
{
if(j==26)
*(*(p+i)+j)=*(*(p+i-1)+0);
elseif(j==27)
*(*(p+i)+j)=*(*(p+i-1)+1);
else
*(*(p+i)+j)=*(*(p+i-1)+j+2);
}
}
}
(2)密文生成模块
voidmiwen(int*ip_1)
{
inti,j,a,c,b,x[8];
for(i=0;i<=7;i++)
{
a=i*8;
x[i]=0;
for(j=7;j>=0;j--)
{
c=*(ip_1+a);
b=pow(2,j);
x[i]=x[i]+b*c;
miwens[i]=x[i];//把密文copy在miwens数组中为了输出使用
a++;
}
}
//printf("密文为:
");
for(i=0;i<=7;i++)
{
a=x[i]%127;
printf("%c",(char)(a));
}
printf("\n");
}
4.实验结果
二、AES算法
1.AES算法简介
AES是一种可用来保护电子数据的新型加密算法。
特别是,AES是可以使用128、192和256位密钥的迭代式对称密钥块密码,并且可以对128位(16个字节)的数据块进行加密和解密。
与使用密钥对的公钥密码不同的是,对称密钥密码使用同一个密钥来对数据进行加密和解密。
由块密码返回的加密数据与输入数据具有相同的位数。
迭代式密码使用循环结构来针对输入数据反复执行排列和置换运算。
2.算法实现
以加密函数为例,如下所示,首先对密钥进行预处理密钥扩展,然后明文进行Nr(Nr与密钥长度有关)次迭代运算,包括字节代换ShiftRows行移位、MixColumns、列混合以及AddRoundKey密钥加。
voidCipher()
{
inti,j,round=0;
//把明文赋值到状态数组中
for(i=0;i<4;i++)
for(j=0;j<4;j++)
state[j][i]=in[i*4+j];
//先与初始轮密钥相加
AddRoundKey(0);
//第一轮至(Nr-1)轮的迭代运算,第Nr轮不用进行列混合运算
for(round=1;round { SubBytes();//字节代换 ShiftRows();//行移位 MixColumns();//列混合 AddRoundKey(round);//密钥加 } SubBytes(); ShiftRows(); AddRoundKey(Nr); //加密结束,将机密结果填入数组out中以便输出 for(i=0;i<4;i++) for(j=0;j<4;j++) out[i*4+j]=state[j][i]; } 解密函数的流程和加密函数是一致的,只是对于行变换、列变换、以及相关s盒子为加密的逆过程。 字节代换(SubBytes)字节代换是非线形变换,独立地对状态的每个字节进行。 行移位(ShiftRows)是将状态阵列的各行进行循环移位,不同状态行的位移量不同。 第0行不移动,第1行循环左移C1个字节,第2行循环左移C2个字节,第3行循环左移C3个字节。 位移量C1、C2、C3的取值与Nb有关。 列混合(MixColumns)是将状态阵列的每个列视为多项式,再与一个固定的多项式c(x)进行模x4+1乘法。 Rijndael的设计者给出的c(x)为(系数用十六进制数表示): c(x)=‘03’x3+‘01’x2+‘01’x+‘02’。 密钥加(AddRoundKey)是将轮密钥简单地与状态进行逐比特异或。 轮密钥由种子密钥通过密钥编排算法得到,轮密钥长度等于分组长度Nb。 程序流程图 AES流程图 3.实验结果 首先,输入密钥cryption,输入明文Idolikethisbook,实验结果如图所示。 实验结果 三、RC4算法 1.算法简介 RC4加密算法是大名鼎鼎的RSA三人组中的头号人物RonRivest在1987年设计的密钥长度可变的流加密算法簇。 首先,用从1到256个字节的可变长度密钥初始化一个256个字节的状态盒S[256]。 然后,通过S盒子对密钥按字节进行变换。 最后可以得到变换后的密钥。 对于加密,只要让密钥按字节与明文进行异或。 而解密,只要让密钥按字节与密文进行异或。 2.算法实现 开始时,S中元素的值被置为按升序从0到255,即S[0]=0,S[1]=1,……,S[255]=255。 同时对密钥key[key_len]的进行填充到随机序列密钥rc4key[256]中,(key_len为key的字节长度,且不大于256)。 循环重复用key,直到rc4key的所有字节都被赋值。 然后根据密钥re4key去对S盒进行变换。 这些预操作可概括如下: //S盒先初始化为s[0]=0,s[1]=1...s[255]=255 for(i=0;i<255;i++) S[i]=i; //初始化序列化密钥 for(i=0;i<256;i++) { j=i%key_len; rc4key[i]=key_data[j]; } //根据密钥rc4key,填充S盒 for(j=0,i=0;i<256;i++) { j=(rc4key[i]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中南 大学 现代 密码学 实验 报告 材料