现代密码学实验报告

合集下载

现代密码学实验报告

现代密码学实验报告

现代密码学实验报告学生姓名学号专业班级指导教师学院完成时间实验一对称密码算法实验[实验目的]1.掌握密码学中经典的对称密码算法DES、AES、RC4的算法原理。

2.掌握DES、AES、RC4的算法流程和实现方法。

[实验内容]1. 分析DES、AES、RC4、SHA的实现过程。

2. 用程序设计语言将算法过程编程实现。

3. 完成字符串数据的加密运算和解密运算输入明文:Idolikethisbook输入密钥:cryption[实验步骤]一、DES算法1、DES算法及原理DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。

明文按64位进行分组,密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位,使得每个密钥都有奇数个1)分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。

2、DES算法加解密过程(1) DES算法加密过程如下:a.初始置换。

DES的第一阶段包括64位分组的置换,改变每个分组中位的顺序。

术语置换使用其严格的数学意义;只改变了顺序。

这64位数据现在被分成两半:L0(左半部分)和R0(右半部分)。

下标0说明是原始的数据。

在DES算法第二阶段的每次循环后,这些下标加1。

b.循环移位(16次)一种根据密钥,并且依赖于表格的算法。

这种操作通常被称为数据移位。

这个算法要重复16次,但由于每次移位都使用密钥的不同子分组,因此每次移位的操作各不相同。

密钥的子分组由另一组表格和表格的移位算法来确定。

在每次循环以后,L(左半部分)和R(右半部分)的下标依次加一。

第16次循环的结果被称为预输出。

c.逆置换DES的最后一个阶段包括64位分组的置换,改变每个分组中位的顺序,这与第1阶段的操作类似。

这次置换的输出结果就是密文。

(2)解密过程DES的解密过程和加密过程相同,只是在解密过程中将子密钥的使用顺序颠倒。

密码学案例实验报告书

密码学案例实验报告书

一、实验背景随着信息技术的飞速发展,信息安全问题日益突出。

密码学作为保障信息安全的核心技术,在数据加密、身份认证、数字签名等领域发挥着重要作用。

为了加深对密码学原理的理解,提高实际应用能力,我们开展了本次密码学案例实验。

二、实验目的1. 掌握DES加密算法的基本原理和操作步骤。

2. 熟悉RSA加密算法的原理和应用。

3. 学习数字签名技术的应用。

4. 培养动手实践能力,提高解决实际问题的能力。

三、实验内容1. DES加密算法(1)实验目的:了解DES加密算法的基本原理,掌握DES加密和解密过程。

(2)实验内容:① 设计一个简单的DES加密程序,实现明文到密文的转换。

② 设计一个简单的DES解密程序,实现密文到明文的转换。

(3)实验步骤:① 编写DES加密程序,输入明文和密钥,输出密文。

② 编写DES解密程序,输入密文和密钥,输出明文。

2. RSA加密算法(1)实验目的:了解RSA加密算法的基本原理,掌握RSA加密和解密过程。

(2)实验内容:① 设计一个简单的RSA加密程序,实现明文到密文的转换。

② 设计一个简单的RSA解密程序,实现密文到明文的转换。

(3)实验步骤:① 编写RSA加密程序,输入明文和密钥对,输出密文。

② 编写RSA解密程序,输入密文和私钥,输出明文。

3. 数字签名技术(1)实验目的:了解数字签名技术的基本原理,掌握数字签名的生成和验证过程。

(2)实验内容:① 设计一个简单的数字签名程序,实现签名生成和验证。

(3)实验步骤:① 编写数字签名程序,输入明文、私钥和签名算法,输出签名。

② 编写数字签名验证程序,输入明文、公钥和签名,验证签名是否正确。

四、实验结果与分析1. DES加密算法实验结果通过编写DES加密和解密程序,成功实现了明文到密文和密文到明文的转换。

实验结果表明,DES加密算法在保证数据安全的同时,具有较高的效率。

2. RSA加密算法实验结果通过编写RSA加密和解密程序,成功实现了明文到密文和密文到明文的转换。

现代密码学-古典密码 实验报告之欧阳治创编

现代密码学-古典密码 实验报告之欧阳治创编

欧阳治创编 2021.03.10现代密码学实验报告院系:理学院班级:信安二班姓名:学号:前言密码学(Cryptology)是研究秘密通信的原理和破译秘密信息的方法的一门学科。

密码学的基本技术就是对数据进行一组可逆的数学变换,使未授权者不能理解它的真实含义。

密码学包括密码编码学(Cryptography)和密码分析学(Cryptanalyst)两个既对立又统一的主要分支学科。

研究密码变化的规律并用之于编制密码以保护信息安全的科学,称为密码编码学。

研究密码变化的规律并用之于密码以获取信息情报的科学,称为密码分析学,也叫密码破译学。

密码学在信息安全中占有非常重要的地位,能够为信息安全提供关键理论与技术。

密码学是一门古老而深奥的学问,按其发展进程,经历了古典密码和现代密码学两个阶段。

现代密码学(Modern Cryptology)通常被归类为理论数学的一个分支学科,主要以可靠的数学方法和理论为基础,为保证信息的机密性、完整性、可认证性、可控性、不可抵赖性等提供关键理论与技术。

古典密码算法实验在密码编码体制中有两种基本也是古老的编码体制一直沿用至今,它们是代替密码和置换密码,其历史悠久并且是现代密码体制的基本组成部分,在密码学中占有重要地位。

古典密码是密码学发展的一个阶段,也是近代密码学产生的渊源,一般把Shannon 在1949 年发表“保密系统的通信理论”之前的时期称为古典密码时期。

尽管古典密码大多比较简单,一般可用手工或机械方式实现,且都可用统计分析方法破译,目前已很少采用。

但是,古典密码所采用的代替技术和置换技术仍然是现代分组密码算法设计的基础,了解它们的设计原理,有助于理解、设计和分析现代密码。

一、实验目的通过编程实现经典的代替密码算法和置换密码,包括移位密码、维吉尼亚密码、周期置换密码、列置换密码,加深对代替技术的了解,为现代分组密码实验奠定基础。

二、实验原理代替(Substitution)是古典密码中基本的处理技巧,就是将明文字母由其他字母表中的字母替换的一种方法。

现代密码算法实验报告(3篇)

现代密码算法实验报告(3篇)

第1篇一、实验目的1. 了解现代密码学的基本原理和数论基础知识;2. 掌握非对称密码体制的著名代表RSA加密算法的工作原理和流程;3. 设计实现一个简单的密钥系统;4. 掌握常用加密算法AES和DES的原理及实现。

二、实验内容1. RSA加密算法实验2. AES加密算法实验3. DES加密算法实验三、实验原理1. RSA加密算法RSA算法是一种非对称加密算法,由罗纳德·李维斯特、阿迪·沙米尔和伦纳德·阿德曼三位密码学家于1977年提出。

其基本原理是选择两个大质数p和q,计算它们的乘积n=pq,并计算欧拉函数φ(n)=(p-1)(q-1)。

选择一个整数e,满足1<e<φ(n)且e与φ(n)互质。

计算e关于φ(n)的模逆元d。

公开密钥为(e,n),私有密钥为(d,n)。

加密过程为C=Me mod n,解密过程为M=Cd mod n。

2. AES加密算法AES(Advanced Encryption Standard)是一种分组加密算法,采用128位分组大小和128、192或256位密钥长度。

AES算法主要分为四个阶段:初始轮、密钥扩展、中间轮和最终轮。

每个轮包括字节替换、行移位、列混淆和轮密钥加。

3. DES加密算法DES(Data Encryption Standard)是一种分组加密算法,采用64位分组大小和56位密钥长度。

DES算法主要分为16轮,每轮包括置换、置换-置换、S盒替换和密钥加。

四、实验步骤及内容1. RSA加密算法实验(1)选择两个大质数p和q,计算n=pq和φ(n)=(p-1)(q-1);(2)选择一个整数e,满足1<e<φ(n)且e与φ(n)互质,计算e关于φ(n)的模逆元d;(3)生成公开密钥(e,n)和私有密钥(d,n);(4)用公钥对明文进行加密,用私钥对密文进行解密。

2. AES加密算法实验(1)选择一个128、192或256位密钥;(2)初始化初始轮密钥;(3)进行16轮加密操作,包括字节替换、行移位、列混淆和轮密钥加;(4)输出加密后的密文。

密码学实验报告

密码学实验报告

《—现代密码学—》实验指导书适用专业:计算机科学与技术江苏科技大学计算机科学学院2011年11 月实验一古典密码实验学时:2学时实验类型:验证实验要求:必修一、实验目的编程实现古典密码的加解密方法。

二、实验内容(1)移位密码的加密和解密函数。

(2)仿射密码的加密和解密函数。

(3)维吉尼亚密码的加密和解密函数。

三、实验原理、方法和手段(1)移位密码对于明文字符,加密密钥,加密方法为解密方法为(2)仿射密码对于明文字符,加密密钥,加密方法为y ax b a b=+==,gcd(,26)1,1,2,,25解密方法为(3)维吉尼亚密码选取密钥字Key,将明文按照密钥字长度分组,将明文与密钥字对应字符相加并对26求余,即为密文字符。

解密过程为四、实验组织运行要求本实验采用集中授课形式,每个同学独立完成上述实验要求。

五、实验条件每人一台计算机独立完成实验,有如下条件:(1)硬件:微机;(2)软件:VC++6.0、VC++.Net 2005。

六、实验步骤(1)将各函数编写完成;(2)在主函数中调用各函数,实现加密和解密。

七、实验报告实验报告主要包括实验目的、实验内容、实验原理、源程序及结果。

移位密码加密:#include<stdio.h>#define n 3 //移位位数void change(char string[]){int i;for(i=0;string[i]!='\0';i++){if(string[i]>='a'&&string[i]<='z')string[i]=(string[i]+n>='z'?string[i]+n-26:string[i]+n); }}void main(){char str[100];printf("请输入一段明文");gets(str);change(str);printf("密文为:\n");puts(str);}移位密码解密:#include<stdio.h>#define n 3 //移位位数void change(char string[]){int i;for(i=0;string[i]!='\0';i++){if(string[i]>='a'&&string[i]<='z')string[i]=(string[i]+n<'a'?string[i]-n+26:string[i]-n); }}void main(){char str[100];printf("请输入一段密文");gets(str);change(str);printf("明文为:\n");puts(str);}仿射密码加密:#include<stdio.h>void fun( char a[],int x,int y){int i;for(i=0;a[i]!='\0';i++){a[i]=(x*(a[i]-97)+y)%26+97;}}main(){char string[100];int x,y;printf("输入");gets(string);printf("请输入密钥");scanf("%d,%d",&x,&y);printf("明文:%s\n",string);fun(string,x,y);printf("密文为:%s\n",string); }仿射密码解密:#include<stdio.h>void fun( char a[],int x,int y) {int i;for(i=0;a[i]!='\0';i++){a[i]=(x*(a[i]-97)+y)%26+97;}}main(){char string[100];int x,y;printf("输入");gets(string);printf("请输入密钥");scanf("%d,%d",&x,&y);printf("密文:%s\n",string);fun(string,x,y);printf("明文:%s\n",string);}密码加密:#include<stdio.h>void change(char old[],char new1[][5]){ int i,j,t;char temp[20][5];t=strlen(old);for(i=t;i<(5-t%5)+t;i++) //将一维数组old每5个分成一组不足5位的用X 补充old[i]='x';for(i=t+(5-t%5);i<100;i++)old[i]='\0';for(i=0;i<20;i++) //将一维数组old转换成一个20*5的二维数组tempfor(j=0;j<5;j++)temp[i][j]=old[5*i+j];for(i=0;i<20;i++) //密文字母交换顺序{new1[i][0]=temp[i][1];new1[i][1]=temp[i][4];new1[i][2]=temp[i][3];new1[i][3]=temp[i][0];new1[i][4]=temp[i][2];}}main(){char old[100],new1[20][5];gets(old);change(old,new1);printf("%s",new1);}密码解密#include<stdio.h>void change(char old[],char new1[][5]){ int i,j,t;char temp[20][5];t=strlen(old);for(i=0;i<20;i++) //将一维数组old转换成一个20*5的二维数组tempfor(j=0;j<5;j++)temp[i][j]=old[5*i+j];for(i=0;i<20;i++) //密文字母交换顺序 {new1[i][1]=temp[i][0];new1[i][4]=temp[i][1];new1[i][3]=temp[i][2];new1[i][0]=temp[i][3];new1[i][2]=temp[i][4];}}main(){char old[100],new1[20][5];gets(old);change(old,new1);printf("%s",new1);}实验二序列密码实验学时:2学时实验类型:验证实验要求:必修一、实验目的编程实现序列密码RC4的加密方法。

密码学实验报告三

密码学实验报告三
加密流程解密流程
(2)子密钥的产生流程:
子密钥产生流程
2、利用下列程序实现一个文件的加密和解密:(程序的主要代码,整个程序见附件)
//密钥置换1pc-1
intDES_PC1_Transform(ElemTypekey[64],ElemTypetempbts[56]){
intcnt;
for(cnt=0;cnt<56;cnt++){
}
memcpy(data,temp,32);
return0;
}
//循环左移
//左右两边同时循环左移相同的位数.
//10010循环左移1位为00101,左移2位为01010
intDES_ROL(ElemTypedata[56],inttimes){
ElemTypetemp[56];//temp只保存将要循环到右边的位.
其他:
评价教师签名:
一、实验原理和目的
DES算法属于分组加密算法,即在明文加密和密文解密过程中,信息都是按照固定长度分组后进行处理的。混淆和扩散是它采用的两个最重要的安全特性。混淆是指通过密码算法使明文和密文以及密钥的关系非常复杂,无法从数学上描述或者统计。扩散是指明文和密钥中的每一位信息的变动,都会影响到密文中许多位信息的变动,从而隐藏统计上的特性,增加密码的安全。
data[cur2+1]=(output&0X04)>>2;//output=7=0111oxo4=0100
data[cur2+2]=(output&0X02)>>1;//相&得到0100右移2位得到1
data[cur2+3]=output&0x01;
}

密码学实验报告

密码学实验报告

密码学实验报告中文汉字的密码化实验1. 实验简介本实验旨在通过对中文汉字的密码化实验,探究密码学在信息安全领域中的应用。

在本实验中,我们将使用替换密码技术对中文汉字进行加密和解密,并评估其安全性和实用性。

2. 实验步骤2.1 选择密钥在开始实验之前,我们需要选择一个密钥。

密钥是密码算法的关键,它用于对明文进行加密和解密。

在本实验中,我们选择一个包含所有中文汉字的密钥表。

该密钥表将用于替换明文中的汉字,从而实现密码化。

2.2 加密过程加密过程涉及将明文中的汉字替换为对应的密钥表中的汉字。

我们将使用一种称为替换密码的技术来实现加密。

具体步骤如下:步骤一:准备明文 - 选择一段中文汉字作为明文。

步骤二:选择密钥表 - 使用预先准备好的密钥表,其中包含了所有中文汉字的替换映射关系。

步骤三:替换汉字 - 将明文中的每个汉字根据密钥表中的映射进行替换。

步骤四:生成密文 - 将替换后的汉字按照顺序组成密文。

2.3 解密过程解密过程即将密文还原为明文。

在我们的实验中,解密过程与加密过程密切相关,因为它需要使用相同的密钥表进行替换。

具体步骤如下:步骤一:准备密文 - 选择加密过程生成的密文作为输入。

步骤二:选择密钥表 - 使用和加密过程相同的密钥表。

步骤三:替换汉字 - 将密文中的每个汉字根据密钥表中的映射进行替换。

步骤四:生成明文 - 将替换后的汉字按照顺序组成明文。

3. 实验结果与讨论在本实验中,我们选择了一段中文汉字作为明文,并使用已准备好的密钥表进行加密和解密操作。

经过多次实验,我们得到了一些实验结果和相应的讨论。

3.1 加密结果经过加密过程,我们得到了一段由密文组成的结果。

加密后的密文将替换明文中的汉字,使其具有一定的保密性。

然而,我们也发现了一些问题:问题一:密文长度增加 - 密文的长度通常会大于明文的长度,这可能导致在传输和存储过程中的一些问题。

问题二:密钥表可预测 - 由于我们使用了固定的密钥表,攻击者有可能通过分析密文和明文之间的关系来推断出密钥表的内容。

现代密码学——古典密码算法(实验报告)

现代密码学——古典密码算法(实验报告)

安全SnoWolF/百度B英俊制作课程名称现代密码学实验实验项目名称古典密码算法练习一 Caesar密码加密时每一个字母向前推移k位,例如当k=5时,置换表如表2所示。

表2 Caesar置换表于是对于明文:datasecurityhasevolvedrapidly经过加密后就可以得到密文:IFYFXJHZWNYDMFXJATQAJIWFUNIQD若令26个字母分别对应整数0~25,如表3所示。

表3 Caesar置换表则Caesar加密变换实际上是:c=(m+k)mod26其中m是明文对应的数据,c是与明文对应的密文数据,k是加密用的参数,也称为密钥。

很容易得到相应的Caesar解密变换是:m=D(c)=(c–k)mod26例如明文:datasecurity对应的数据序列:301901842201781924当k=5时经过加密变换得到密文序列:852452397252213243对应的密文为:IFYFXJHZWNYD【实验步骤】本练习主机A、B为一组,C、D为一组,E、F为一组。

首先使用“快照X”恢复Windows系统环境。

一.手动完成Caesar密码(1) 在实验原理部分我们已经了解了Caesar密码的基本原理,那么请同学们写出当密钥k=3时,对应明文:data security has evolved rapidly的密文: GDWD VHFXULWB KDV HYROYHG UDSLGOB 。

(2) 进入实验平台,单击工具栏中的“密码工具”按钮,启动密码工具,在向导区点击“Caesar密码”。

在明文输入区输入明文:data security has evolved rapidly。

将密钥k调节到3,查看相应的密文,并与你手动加密的密文进行比较。

请根据密钥验证密文与明文对应关系是否正确。

二.Caesar加密(1) 进入“加密解密”|“Caesar密码”视图,在明文输入区输入明文(明文应为英文),单击“加密”按钮进行加密。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
SubBytes(); //字节代换
ShiftRows(); //行移位
MixColumns(); //列混合
AddRoundKey(round); //密钥加
}
SubBytes();
ShiftRows();
AddRoundKey(Nr);
// 加密结束,将机密结果填入数组out中以便输出
for(i=0;i<4;i++)
// 把明文赋值到状态数组中
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<Nr;round++)
作用:身份认证,是任何网络安全方案的一个基础。如在大部分情况下, 需要认证的实体是通信的发送者,即需要确定访问者的合法性问题。 S/KEY协议主要是用于身份认证。
二、用MD5实现加密
1、算法简介
MD5即Message-Digest Algorithm 5(信息-摘要算法 5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。
混合列运算MixColumns是将状态阵列的每个列视为多项式,再与一个固定的多项式c(x)进行模x4+1乘法。Rijndael的设计者给出的c(x)为(系数用十六进制数表示):c(x)=‘03’x3+‘01’x2+‘01’x+‘02’。
轮秘钥加密AddRoundKey是将轮密钥简单地与状态进行逐比特异或。轮密钥由种子密钥通过密钥编排算法得到,轮密钥长度等于分组长度Nb。
3.完成字符串数据的加密运算和解密运算
输入十六进制明文:11223344556677889900AABBCCDDEEFF
输入十六进制密钥:13579BDF02468ACE1234567890ABCDEF
[实验步骤]
1.预习AES、RC4算法。
2.写出算法流程,用程序设计语言将算法过程编程实现。
3.输入指定的明文、密钥进行实验,验证结果。
2.答:初始密钥的不同会导致S盒的不同,所以可能影响输出中的256比特。
3.答:在算法的实现过程中,对于异或等平时很难接触到的位操作不熟悉导致在轮密钥加密等过程的实现变得很艰难。最难处理的是字符串对的补足长度问题,这个问题在设计之初并没有想到过导致最后测试时出现了很多问题,最后通过查阅资料等方式解决了这些问题。
程序流程图
RC4流程图
3、运行结果首先,输入指定密钥13579BDF02468ACE1234567890ABCDEF,输入指定明文11223344556677889900AABBCCDDEEFF,进行实验,结果如图所示。
4、
选择不同的输入,输入秘钥11223344556677889900AABBCCDDEEFF,输入明文13579BDF02468ACE1234567890ABCDEF ,输出结果如图所示。
//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盒
2、算法实现及流程
以加密函数为例,如下所示,首先对密钥进行预处理密钥扩展,然后明文进行Nr(Nr与密钥长度有关)次迭代运算,包括字节替换SubBytes、 移位行运算ShiftRows、混合列运算MixColumns、以及轮秘钥加密AddRoundKey。
void Cipher()
{
int i,j,round=0;
实验一 密码算法实验
[实验目的]
1.掌握密码学中经典的对称密码算法AES、RC4的算法原理。
2.掌握AES、RC4的算法流程和实现方法。
[实验预备]
1.AES算法的基本原理和特点。
2.流密码RC4的密钥流生成以及S盒初始化过程。
[实验内容]
1.分析AES、RC4的实现过程。
2.用程序设计语言将算法过程编程实现。
[问题讨论]
1.改变明文或密钥中的一个比特值可能影响AES值中的多少比特?
2.在RC4的密钥流生成中,改变初始密钥的一个比特值可能影响输出中的多少比特?
3.分析实验中在编辑、编译、运行等各环节中所出现的问题及解决方法。
回答问题
1.答:明文和密钥在S盒置换时,不同的字节会替换出不同的结果。算法过程中一共进行了10轮加密,所以改变一个比特值可能影响AES值中的80比特(8 x 10)。
}
这两个过程使用同样的函数即可,加密中,将k的值与下一明文字节异或;解密中//将缓冲区数据和随机系列密钥进行异或,则可进行加密或者解密 ,将k的值与下一密文字节异或。操作如下:
for(i = 0; i < buffer_len; i++)
result[i] = buffer_data[i] ^ rc4key[i];
for( j = 0, i = 0; i < 256; i++)
{
j = (rc4key[i] + S[i] + j) % 256;
swap(&S[i], &S[j]); //交换S[i]和S[j]的数值
}
矢量S一旦完成初始化,输人密钥就不再被使用.密钥流的生成是从s[0]到S[255],对每个S[i],根据当前S的值,将S[i]与S中的另一字节置换.当S[255]完成置换后,操作继续重复,从S[0]开始。操作如下:
将输入消息按512-位分组,最后要填充成为512位的整数倍,且最后一组的后64位用来填充消息长度(填充前)。填充方法为附一个1在消息后,后接所要求的多个0。这样可以确保不同消息在填充后不相同。
由于留出64位用来表示消息长度,那么消息的长度最多可达264字节,相当于4G×4G字节,文件的长度是不可能达到这么大,因此通常都是只采用64位中的低32位来表示消息长度,高32位填充0。 l 初始化MD变量。由于每轮输出128位,这128位可用下面四个32位字A,B,C,D来表示。
2.原理以及流程图
MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
在MD5算法中,首先需要对信息进行填充,使其位长对512求余的结果等于448。因此,信息的位长(Bits Length)将被扩展至N*512+448,N为一个非负整数,N可以是零。填充的方法如下,在信息的后面填充一个1和无数个0,直到满足上面的条件时才停止用0对信息的填充。然后,在这个结果后面附加一个以64位二进制表示的填充前信息长度。经过这两步的处理,现在的信息的位长=N*512+448+64=(N+1)*512,即长度恰好是512的整数倍。这样做的原因是为满足后面处理中对信息长度的要求。MD5中有四个32位被称作链接变量(Chaining Variable)的整数参数,他们分别为:A=0x67452301,B=0xefcdab89,C=0x98badcfe,D=0x10325476。当设置好这四个链接变量后,就开始进入算法的四轮循环运算。循环的次数是信息中512位信息分组的数目。
二、RC4算法
1、RC4算法简介
RC4加密算法是大名鼎鼎的RSA三人组中的头号人物Ron Rivest在1987年设计的密钥长度可变的流加密算法簇。首先,用从1到256个字节的可变长度密钥初始化一个256个字节的状态盒S[256]。然后,通过S盒子对密钥按字节进行变换。最后可以得到变换后的密钥。对于加密,只要让密钥按字节与明文进行异或。而解密,只要让密钥按字节与密文进行异或。
4.自己选择不同的输入,记录输出结果。
写出所编写程序的流程图和运行界面、运行结果。
一、AES算法
1、AES算法简介
AES 是一种可用来保护电子数据的新型加密算法。特别是,AES 是可以使用 128、192 和 256 位密钥的迭代式对称密钥块密码,并且可以对 128 位(16 个字节)的数据块进行加密和解密。与使用密钥对的公钥密码不同的是,对称密钥密码使用同一个密钥来对数据进行加密和解密。由块密码返回的加密数据与输入数据具有相同的位数。迭代式密码使用循环结构来针对输入数据反复执行排列和置换运算。
实验二 SKEY协议设计实验
[实验目的]
1.掌握身份认证协议的原理和基本思想。
2.掌握SKEY协议的机制和实现方法。
[实验预备]
1.SKEY协议的作用。
2.SKEY协议的安全性分析。
3.SKEY协议的实现过程。
[实验内容]
1.分析SKEY协议的实现过程的身份鉴别过程。
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盒进行变换。这些预操作可概括如下:
相关文档
最新文档