中南大学现代密码学实验报告(共24页).doc
《中南大学现代密码学实验报告(共24页).doc》由会员分享,可在线阅读,更多相关《中南大学现代密码学实验报告(共24页).doc(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上现 代 密 码 学实 验 报 告学生姓名 代巍学 号 专业班级 信息安全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. 完成字符
2、串数据的加密运算和解密运算输入明文:Idolikethisbook 输入密钥:cryption 实验步骤1. 预习DES、AES、RC4算法。2. 写出算法流程,用程序设计语言将算法过程编程实现。3. 输入指定的明文、密钥进行实验,验证结果。4. 自己选择不同的输入,记录输出结果。写出所编写程序的流程图和运行界面、运行结果。一、DES算法1. DES算法及原理DES密码实际上是Lucifer密码的进一步发展。它是一种采用传统加密方法的区组密码。它的算法是对称的,既可用于加密又可用于解密。美国国家标准局1973年开始研究除国防部外的其它部门的计算机系统的数据加密标准,于1973年5月15日和19
3、74年8月27日先后两次向公众发出了征求加密算法的公告。加密算法要达到的目的通常称为DES密码算法要求主要为以下四点: 提供高质量的数据保护,防止数据未经授权的泄露和未被察觉的修改;具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又要便于理解和掌握DES密码体制的安全性应该不依赖于算法的保密,其安全性仅以加密密钥的保密为基础实现经济,运行有效,并且适用于多种完全不同的应用。 目前在这里,随着三金工程尤其是金卡工程的启动,DES算法在POS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收费站等领域被广泛应用,以此来实现关键数据的保密,如信用卡持卡人的PIN的加密传输,IC卡与POS
4、间的双向认证、金融交易数据包的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对核心数据
5、进行DES加密,然后以密码形式在公共通信网(如电话网)中传输到通信网络的终点,数据到达目的地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样,便保证了核心数据(如PIN、MAC等)在公共通信网中传输的安全性和可靠性。 通过定期在通信网络的源端和目的端同时改用新的Key,便能更进一步提高数据的保密性,这正是现在金融交易网络的流行做法。 DES算法流程图子密钥产生流程图2.DES算法加密解密过程(1)加密过程。a.初始置换。DES的第一阶段包括64位分组的置换,改变每个分组中位的顺序。术语置换使用其严格的数学意义;只改变了顺序。这64位数据现在被分成两半:L0(左半部分)和R
6、0(右半部分)。下标0说明是原始的数据。在DES算法第二阶段的每次循环后,这些下标加1。 b.循环移位(16次)一种根据密钥,并且依赖于表格的算法。这种操作通常被称为数据移位。这个算法要重复16次,但由于每次移位都使用密钥的不同子分组,因此每次移位的操作各不相同。密钥的子分组由另一组表格和表格的移位算法来确定。在每次循环以后,L(左半部分)和R(右半部分)的下标依次加一。第16次循环的结果被称为预输出。c.逆置换DES的最后一个阶段包括64位分组的置换,改变每个分组中位的顺序,这与第1阶段的操作类似。这次置换的输出结果就是密文。(2)解密过程DES的解密过程和加密过程相同,只是在解密过程中将子
7、密钥的使用顺序颠倒。3. DES算法C+实现模块化设计(囿于篇幅,举几个代表的例子)(1) 二进制转换(将输入的字符串转化为比特数组)void erjinzhi(char z8,int *q)char ch;int i,j,a=7;for(i=0;i8;i+) ch=zi;for(j=0;j8;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)密钥生成时 C D移位void LS_yiwei(int (*p)28,int i)int j;if(i
8、=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); elsefor(j=0;j=27;j+)if(j=26)*(*(p+i)+j)=*(*(p+i-1)+0);else if(j=27)*(*(p+i)+j)=*(*(p+i-1)+1);else*(*(p+i)+j)=*(*(p+i-1)+j+2);(2)密文生成模块void miwen(int *ip_1)int i,j,a,c,b,x8;for(i=0;i=0;j-)c=*(ip_1+a);b=
9、pow(2,j);xi=xi+b*c;miwensi=xi;/把密文copy在miwens数组中 为了输出使用a+;/printf(密文为:);for(i=0;i=7;i+)a=xi%127;printf(%c,(char)(a);printf(n);4. 实验结果二、AES算法1.AES算法简介AES 是一种可用来保护电子数据的新型加密算法。特别是,AES 是可以使用 128、192 和 256 位密钥的迭代式对称密钥块密码,并且可以对 128 位(16 个字节)的数据块进行加密和解密。与使用密钥对的公钥密码不同的是,对称密钥密码使用同一个密钥来对数据进行加密和解密。由块密码返回的加密数据与
10、输入数据具有相同的位数。迭代式密码使用循环结构来针对输入数据反复执行排列和置换运算。2.算法实现以加密函数为例,如下所示,首先对密钥进行预处理密钥扩展,然后明文进行Nr(Nr与密钥长度有关)次迭代运算,包括字节代换ShiftRows行移位、MixColumns、列混合以及AddRoundKey密钥加。void Cipher() int i,j,round=0; / 把明文赋值到状态数组中 for(i=0;i4;i+)for(j=0;j4;j+) stateji = ini*4 + j; / 先与初始轮密钥相加 AddRoundKey(0); / 第一轮至(Nr-1)轮的迭代运算,第Nr轮不用进
11、行列混合运算 for(round=1;roundNr;round+) SubBytes();/字节代换 ShiftRows();/行移位 MixColumns();/列混合 AddRoundKey(round);/密钥加 SubBytes(); ShiftRows(); AddRoundKey(Nr); / 加密结束,将机密结果填入数组out中以便输出 for(i=0;i4;i+)for(j=0;j4;j+) outi*4+j=stateji;解密函数的流程和加密函数是一致的,只是对于行变换、列变换、以及相关s盒子为加密的逆过程。字节代换(SubBytes)字节代换是非线形变换,独立地对状态的
12、每个字节进行。行移位(ShiftRows)是将状态阵列的各行进行循环移位,不同状态行的位移量不同。第0行不移动,第1行循环左移C1个字节,第2行循环左移C2个字节,第3行循环左移C3个字节。位移量C1、C2、C3的取值与Nb有关。列混合(MixColumns)是将状态阵列的每个列视为多项式,再与一个固定的多项式c(x)进行模x4+1乘法。Rijndael的设计者给出的c(x)为(系数用十六进制数表示):c(x)=03x3+01x2+01x+02。密钥加(AddRoundKey)是将轮密钥简单地与状态进行逐比特异或。轮密钥由种子密钥通过密钥编排算法得到,轮密钥长度等于分组长度Nb。程序流程图AE
13、S流程图3.实验结果首先,输入密钥cryption,输入明文Idolikethisbook,实验结果如图所示。实验结果三、RC4算法1.算法简介RC4加密算法是大名鼎鼎的RSA三人组中的头号人物Ron Rivest在1987年设计的密钥长度可变的流加密算法簇。首先,用从1到256个字节的可变长度密钥初始化一个256个字节的状态盒S256。然后,通过S盒子对密钥按字节进行变换。最后可以得到变换后的密钥。对于加密,只要让密钥按字节与明文进行异或。而解密,只要让密钥按字节与密文进行异或。2.算法实现开始时,S中元素的值被置为按升序从0到255,即S0=0,S1=1, ,S255=255。同时对密钥k
14、eykey_len的进行填充到随机序列密钥rc4key256中,(key_len为key的字节长度,且不大于256)。循环重复用key,直到rc4key的所有字节都被赋值。然后根据密钥re4key去对S盒进行变换。这些预操作可概括如下:/S盒先初始化为s0=0,s1=1.s255=255for(i = 0; i 255; i+)Si=i;/初始化序列化密钥for(i = 0; i 256; i+)j = i % key_len ;rc4keyi = key_dataj;/根据密钥rc4key,填充S盒for( j = 0, i = 0; i 256; i+)j = (rc4keyi + Si
15、+ j) % 256;swap(&Si, &Sj);/交换Si和Sj的数值矢量S一旦完成初始化,输人密钥就不再被使用密钥流的生成是从s0到S255,对每个Si,根据当前S的值,将Si与S中的另一字节置换当S255完成置换后,操作继续重复,从S0开始。操作如下:/生成随机序列密钥for(counter = 0; counter buffer_len; counter+)i = (i + 1) % 256;j = (Si + j) % 256;swap(&Si, &Sj);t = (Si + Sj) % 256;rc4keycounter = St;这两个过程使用同样的函数即可,加密中,将k的值与
16、下一明文字节异或;解密中,将k的值与下一密文字节异或。操作如下:/将缓冲区数据和随机系列密钥进行异或,则可进行加密或者解密for(i = 0; i buffer_len; i+)resulti = buffer_datai rc4keyi;程序流程图图1.1RC4流程图3.运行结果首先,输入密钥cryption,输入明文Idolikethisbook,实验结果如图所示。加密结果1如果密钥不变,明文变为idolikethisbook,实验结果如图所示。可以看到,当密钥不变,明文做一小部分改变的时候(第一位由I改变为i),只有对应位的密文发生改变。加密结果2问题讨论1. 在DES算法中有哪些是弱密
17、钥?哪些是半弱密钥?2. 改变明文或密钥中的一个比特值可能影响AES值中的多少比特?3.分析实验中在编辑、编译、运行等各环节中所出现的问题及解决方法。回答问题答1、弱密钥:DES在16迭代中分别使用不同的子密钥来确保DES的安全性,如果存在这样一个秘钥,尤其产生的子密钥是相同的,则称其为弱密钥。即K1=K2=K16半弱密钥:由K产生的子密钥K1,K2,,K16中存在着重复但是不是完全相同,则称为半弱密钥2、最多影响128比特3、实验二 公钥密码算法实验实验目的1.掌握密码学中常用的公钥密码算法RSA、ECC的算法原理。2.掌握RSA、ECC的算法流程和实现方法。实验预备1.RSA和ECC密码系
18、统所基于的数学难题是什么?2.RSA和ECC算法的基本原理。3.公钥密码系统可以取代对称密码系统吗? 4.RSA和ECC的实现过程。实验内容1. 分析RSA、ECC的实现过程。2. 用程序设计语言将算法过程编程实现3. 完成数据的加密运算和解密运算输入明文:security 输入密钥:cryption 对ASCII码进行加密和解密。实验步骤1. 预习RSA、ECC算法。2. 了解大素数的生成、大数的运算、公钥、私钥的生成。3. 写出算法流程,用程序设计语言将算法过程编程实现。4. 输入指定的明文和密钥进行实验,验证结果。写出所编写程序的流程图和运行界面、运行结果。一、RSA 算法1. RSA算
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中南 大学 现代 密码学 实验 报告 24
限制150内