密码学实验讲义及实验报告2014

合集下载

密码学实验报告

密码学实验报告

.院系:数学与统计学学院专业:信息与计算科学年级: 11 级课程名称: XXXXX学号: XXXXXXXXXX姓名: XXXXX 指导教师: XXXXX2014年 10 月26 日年级班号学号专业姓名实验名称实验一Enigma密码实验类型设计型综合型创新型√实验目的或要求通过使用Engima密码模拟器,加深对古典密码体制的了解,为深入学习现代密码学奠定基础。

实验原理(算法流程)1.实验原理ENIGMA看起来像一个装满了复杂而精致的元件的盒子,其内部被分解成相当简单的三部分:键盘、转子和显示器。

下面是它的最基本部分的示意图(图示已简化,字母和灯应分别有26个)。

图1-1由图可知,水平面板的下面部分是有26个键的键盘,键盘排列类似于我们现在使用的计算机键盘。

键盘上方就是显示器,它由标示了同样字母的26个小灯组成,当键盘上的某个键被按下时,和此字母被加密后的密文相对应的小灯就在显示器上亮起来。

在显示器的上方是三个转子,它们的主要部分隐藏在面板之下。

键盘、转子和显示器由电线相连,电线把键盘的信号对应到显示器不同的小灯上去。

在示意图中我们可以看到,如果按下a键,那么灯B就会亮,这意味着a被加密成了B。

同样地我们看到,b被加密成了A,c被加密成了D,d被加密成了F,e被加密成了E,f被加密成了C。

于是如果我们在键盘上依次键入cafe,显示器上就会依次显示DBCE。

这是最简单的加密方法之一,把每一个字母都按一一对应的方法替换为另一个字母,这样的加密方式叫做“简单替换密码”。

简单替换密码在历史上很早就出现了。

著名的“凯撒法”就是一种简单替换法,它把每个字母和它在字母表中后若干个位置中的那个字母相对应。

比如取后三个位置,那么字母的一一对应就如下表所示:明码字母表:abcdefghijklmnopqrstuvwxy密码字母表:DEFGHIJKLMNOPQRSTUVWXYZABC于是我们就可以从明文得到密文:明文:veni, vidi, vici密文:YHAL, YLGL, YLFL实验结果分析及心得体会 2 实验步骤(1)消息发送者利用Engima模拟器进行下列操作:明文: INFORMATION SECURITY模拟器参数设置:UKW: BWalzen: I II VRingstellung: F-06 V-22 N-14Stecker: BG CD ER FV HN IU JK LM OP TY生成:在转子的起始位置:XWB,生成INFORMATION SECURITY的密文;模拟器显示如图2-1。

RSA密码学报告

RSA密码学报告

本科实验报告课程名称:计算机密码学课程编号:0806165学生姓名:学号:学院:信息科学技术学院系:计算机科学系专业:指导教师:翁健教师单位:计算机科学系开课时间:2013 ~ 2014学年度第二学期暨南大学教务处2014 年6月24日暨南大学本科实验报告专用纸课程名称计算机密码学成绩评定实验项目名称RSA算法的实现指导教师翁健实验项目编号0806165实验项目类型设计性实验地点南海楼611 学生姓名学号学院信息科学技术学院系计算机科学系专业软件工程实验时间2014年6月9日下午~6月24日下午温度℃湿度一、实验目的:通过实际编程了解非对称密码算法RSA的加密和解密过程,加深对非对称密码算法的认识。

二、实验环境:开发系统:WIN8.1编程语言:C#开发平台:Visual studio 2012三、RSA算法介绍RSA加密算法简史RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。

当时他们三人都在麻省理工学院工作。

RSA就是他们三人姓氏开头字母拼在一起组成的。

公钥与密钥的产生假设Alice想要通过一个不可靠的媒体接收Bob的一条私人讯息。

她可以用以下的方式来产生一个公钥和一个私钥:1.随意选择两个大的质数p和q,p不等于q,计算N=pq。

2.根据欧拉函数,求得r = (p-1)(q-1)3.选择一个小于 r 的整数 e,求得 e 关于模 r 的模反元素,命名为d。

(模反元素存在,当且仅当e与r互质)4.将 p 和 q 的记录销毁。

(N,e)是公钥,(N,d)是私钥。

Alice将她的公钥(N,e)传给Bob,而将她的私钥(N,d)藏起来。

加密消息假设Bob想给Alice送一个消息m,他知道Alice产生的N和e。

他使用起先与Alice 约好的格式将m转换为一个小于N的整数n,比如他可以将每一个字转换为这个字的Unicode码,然后将这些数字连在一起组成一个数字。

现代密码算法实验报告(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)输出加密后的密文。

《密码学》课程设计实验报告-分组密码DES2

《密码学》课程设计实验报告-分组密码DES2

《密码学》课程设计实验报告实验序号:02 实验项目名称:分组密码AES图:AES轮函数结构图:AES轮密钥产生2.AES 算法的基本运算(重点) 方法:通过编程代码实现下列运算:(1)8(2)GF 上的加法(教材 p83定义3-2) (为了描述方便,用花括号表示16进制,下同) 例:{BC }⊕{6A }={D6}(下图中的A 3,3⊕K 3,3=B 3,3)计算或编程方法:按位异或(提示——C 、Java 等语言中的^运算符) (2)8(2)GF 上的多项式加法(教材 p83定义3-7) 例:a(x)={BC}x 3+{42} x 2+{9F} x+{4C}K(x)= {6A}x 3+{00} x 2+{5C} x+{57} a(x) ⊕K(x)= {D6}x 3+{42} x 2+{C3} x+{1B}计算或编程方法:按位异或(提示——C 、Java 等语言中的^运算符)A 0,0A 0,1A 0,2A 0,3A 1,0A 1,1A 1,2A 1,3A 2,0A 2,1A 2,2A 2,3A 3,0A 3,1A 3,2A 3,3K 0,0K 0,1K 0,2K 0,3K 1,0K 1,1K 1,2K 1,3K 2,0K 2,1K 2,2K 2,3K 3,0K 3,1K 3,2K 3,3+B 0,0B 0,1B 0,2B 0,3B 1,0B 1,1B 1,2B 1,3B 2,0B 2,1B 2,2B 2,3B 3,0B 3,1B 3,2B 3,3A 3,3 ⊕K 3,3 =B 3,3 (mod 2)对于AES 中的轮密钥加运算,即可以表示为对应“字节”的加法,每格相加,即定义3-2;也可以表示为对应32位“字”的加法,每列相加,即定义3-7;甚至可以表示为整个128位“状态”的按位异或。

思考:在不同CPU 架构下,哪种表示方法的执行速度最快?(4)8(2)GF 上的多项式乘法(教材 p83定义3-8、p93优化方案) (a )AES 中的列混合运算的实现其中的运算按列(32位字)实现,当然也可表述为下面的4×4的字节矩阵相乘:大家手工计算时,按列进行表述较为简单:例如下面的列混合计算:其中的第一列运算步骤为:在GF(28)中,加法就是按位XOR操作,乘法是根据在上述方程所示的规则执行的。

密码学实验报告三

密码学实验报告三
加密流程解密流程
(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. 掌握古典密码的加密和解密方法;3. 通过编程实现古典密码的加密和解密过程;4. 体验古典密码的破解过程,加深对密码学原理的理解。

二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.73. 开发工具:PyCharm三、实验内容本次实验主要涉及以下几种古典密码:1. 仿射密码2. 单表代替密码3. 维吉尼亚密码4. 移位密码1. 仿射密码(1)原理简介:仿射密码是一种单字母替换密码,加密公式为:Ci = (a pi + b) mod 26,其中,Ci 为密文,pi 为明文,a 和 b 为密钥。

(2)加密和解密代码实现:```pythondef encrypt(plain_text, a, b):cipher_text = ''for char in plain_text:if char.isalpha():cipher_text += chr(((ord(char.upper()) - ord('A') + a b) % 26) + ord('A'))else:cipher_text += charreturn cipher_textdef decrypt(cipher_text, a, b):plain_text = ''for char in cipher_text:if char.isalpha():plain_text += chr(((ord(char.upper()) - ord('A') - a b) % 26) + ord('A'))else:plain_text += charreturn plain_text```2. 单表代替密码(1)原理简介:单表代替密码是一种将明文中的每个字符映射到密文的密码,加密和解密过程是相反的。

密码学实验报告(AES,RSA)

密码学实验报告(AES,RSA)

华北电力大学实验报告||实验名称现代密码学课程设计课程名称现代密码学||专业班级:学生姓名:学号:成绩:指导教师:实验日期:[综合实验一] AES-128加密算法实现 一、实验目的及要求(1)用C++实现;(2)具有16字节的加密演示;(3)完成4种工作模式下的文件加密与解密:ECB, CBC, CFB,OFB.二、所用仪器、设备计算机、Visual C++软件。

三. 实验原理3.1、设计综述AES 中的操作均是以字节作为基础的,用到的变量也都是以字节为基础。

State 可以用4×4的矩阵表示。

AES 算法结构对加密和解密的操作,算法由轮密钥开始,并用Nr 表示对一个数据分组加密的轮数(加密轮数与密钥长度的关系如表2所示)。

AES 算法的主循环State 矩阵执行1 r N 轮迭代运算,每轮都包括所有 4个阶段的代换,分别是在规范中被称为 SubBytes(字节替换)、ShiftRows(行位移变换)、MixColumns(列混合变换) 和AddRoundKey ,(由于外部输入的加密密钥K 长度有限,所以在算法中要用一个密钥扩展程序(Keyexpansion)把外部密钥 K 扩展成更长的比特串,以生成各轮的加密和解密密钥。

最后执行只包括 3个阶段 (省略 MixColumns 变换)的最后一轮运算。

表2 AES 参数比特。

3.2、字节代替(SubBytes )AES 定义了一个S 盒,State 中每个字节按照如下方式映射为一个新的字节:把该字节的高4位作为行值,低4位作为列值,然后取出S 盒中对应行和列的元素作为输出。

例如,十六进制数{84}。

对应S 盒的行是8列是4,S 盒中该位置对应的值是{5F}。

S 盒是一个由16x16字节组成的矩阵,包含了8位值所能表达的256种可能的变换。

S 盒按照以下方式构造:(1) 逐行按照升序排列的字节值初始化S 盒。

第一行是{00},{01},{02},…,{OF};第二行是{10},{l1},…,{1F}等。

《密码学》课程设计实验报告-分组密码工作模式

《密码学》课程设计实验报告-分组密码工作模式

《密码学》课程设计实验报告实验序号:03 实验项目名称:分组密码工作模式分组工作模式具体说明➢电话本模式⏹直接利用分组密码对明文的各分组进行加密⏹缺点1.不能解决短块问题2.容易暴露明文的数据模式。

在计算机系统中,许多数据都具有某种固有的模式,这主要是由数据冗余和数据结构引起的。

例如,各种计算机语言的语句和指令都十分有限,因为在程序中便表现为少量的语句和指令的大量重复⏹流程图➢明密文链接模式⏹设明文M=(M1,⋯,M n),相应的密文C=(C1,⋯,C n)C i={E(M i⊕Z,K), i=1E(M i⊕M i−1⊕C i−1,K), i=2,⋯,n⏹特点1.加解密错误传播无界2.无法处理短块⏹流程图➢密文链接模式⏹由于明密文链接模式具有加解密错误传播无界的特性,而磁盘等文件通常希望错误传播有界,这时可采用密文链接模式⏹设明文M=(M1,⋯,M n),相应的密文C=(C1,⋯,C n)C i={E(M i⊕Z,K), i=1E(M i⊕C i−1,K), i=2,⋯,n⏹特点1.无法处理短块2.加密错误传播无界,解密错误传播有界➢输出反馈模式⏹将一个分组密码转换为一个密钥序列产生器,从而可以实现用分组密码按流密码的方式进行加解密。

⏹特点1.工作模式的安全性取决于分组密码本身的安全性2.可以解决短块加密3.无错误传播4.适用于加密冗余度较大的数据,例如语音和图像数据⏹流程图➢密文反馈模式⏹与输出反馈的工作原理基本相同,所不同的仅仅是反馈到移位寄存器R的不是E输出中的最右s位,而是密文c i的s位⏹流程图➢X CBC模式⏹X CBC模式解决了CBC模式要求明文数据的长度是密码分组长度的整数倍的限制,可以处理任意长的数据⏹优点1.可以处理任意长度的数据2.适用于计算产生检测数据完整性的消息认证码MAC⏹缺点1.使用3个密钥,密钥的存储和加解密控制都比较麻烦2.接受双方需要共享填充的消息长度➢CTR模式⏹与密文反馈工作模式和输出反馈工作模式一样,把分组密码转换为序列密码,在本质上是利用分组密码产生密钥序列,按序列密码的方式进行加密⏹优点1.可并行,效率高2.适合任意长度的数据3.加解密速度快⏹缺点1.没有错误传播,不适用于数据完整性验证⏹流程图五、分析与讨论1)分组密码不同的工作模式各有各的特点,例如有些工作模式需要处理短块,有些则不需要;有些模式具有错误传播无界的特性,有些则没有。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

密码学基础
实验指导书
黑龙江大学计算机科学技术学院
2013年3月
目录
前言........................................................................................................................... - 2 -要求与评分标准....................................................................................................... - 3 -1要求. (3)
2评分标准 (3)
实验1 古典密码的实现(3学时) .................................................................... - 4 -实验2 对称密钥密码体制的实现(6学时) .................................................... - 4 -实验3 公开密钥密码算法的实现(6学时) .................................................... - 5 -实验4 数字签名算法的实现(3学时) ............................................................ - 5 -附录1:实验报告格式 ........................................................................................... - 7 -
前言
密码学基础是一门理论性和实践性都很强的课程,各种加密算法、解密算法在现实中有广泛的应用。

为了培养学生的实际工作能力,加深对各种算法的理解,本课程在古典密码、对称密钥密码算法、非对称密钥密码算法以及数字签名上均安排了上机实践的内容,使学生在掌握各种算法的原理的基础上,按以下的基本实践内容的要求完成各个算法,达到学以致用的目的。

学生在做加密算法时,对明文利用加密算法进行加密后,需要再利用解密算法进行解密,以便验证结果的正确性;在做数字签名时,对消息进行数字签名后,需要进行验证。

本课程共安排了六个实验题目,每个题目根据难易程度而学时不等。

每个同学在实验报告的最后要给出对每个实验的收获、体会、希望和建议以便于不断改进教学积累经验。

要求与评分标准
《密码学基础》课程实验的目的是为了使学生在课堂学习的同时,通过一系列的实验,使学生加深理解和更好地掌握《密码学基础》课程教学大纲要求的内容。

1 要求
在《密码学基础》的课程实验过程中,要求学生做到:
(1)预习实验指导书有关部分,认真做好实验内容的准备,就实验可能出现的情况提前做出思考和分析。

(2)仔细观察调试程序过程中出现的各种问题,记录主要问题,做出必要说明和分析。

(3)认真按照模板书写实验报告。

(4)遵守机房纪律,服从辅导教师指挥,爱护实验设备。

(5)实验课程不迟到。

如有事不能出席,所缺实验一般不补。

(6)同学在做实验之前要求熟练掌握一种开发环境进行程序设计。

2 评分标准
实验的验收分为两个部分。

第一部分是上机操作,包括设计结果的验收与检查。

第二部分是提交书面的实验报告。

具体评分标准如下:
(1)实验成绩占总成绩的20%。

(2)每个实验满分5分,验收时按完成情况打分。

实验1 古典密码的实现(3学时)
(一)实验目的
1 了解各种古典密码的加密过程和解密过程
2 掌握两种古典密码加密和解密的具体实现
(二)实验类型
验证型
(三)实验内容与步骤
1 用自己熟悉的语言实现程序。

2 输入明文消息以及密钥。

3 实现一种古典密码的加密、解密过程。

4 实现另一种古典密码。

5 总结古典密码的密钥空间以及安全性。

实验2 对称密钥密码体制的实现(6学时)
(一)实验目的
1 掌握对称密钥密码体制
2 掌握DES加密、解密算法
3 掌握子密钥的产生过程
(二)实验类型
验证
(三)实验内容及步骤
1 消息的分组
在DES算法中,每一次只能对64位明文进行加密,首先对明文消息进行分组,如果消息不够64的整数倍,用零进行填充。

2 初始置换
建立初始置换表,将明文通过置换表进行置换。

3 16次迭代运算
在每一次迭代中,包含扩展置换、子密钥产生、S-盒代替等操作。

扩展操作,利用扩展规则,将32位信息扩展成48位。

将扩展得到的信息与子密钥进行异或,
子密钥按照子密钥规则产生。

S-盒代替,利用8个S盒将48位信息压缩成32为。

在迭代中的结构采用Feistel结构。

4 逆置换
将16次迭代的结果进行逆置换产生密文。

5利用加密的逆过程进行解密,验证加密的正确性。

(四)有关说明:
1 该算法加密可以是二进制,也可以是字符或者是数字,如果是字符或者是数字,首先将其转化成比特流。

实验3 公开密钥密码算法的实现(6学时)
(一)实验目的
1 掌握公开密钥密码的原理
2 掌握RSA算法的加密和解密过程
3 用程序实现RSA算法的加密和解密
(二)实验类型
设计型
(三)实验步骤与内容
1 素数的判定
在RSA算法中,需要应用大的素数,采用Rabin-miller算法对大数进行判断,是否为素数。

2大数的运算(小数模拟)
将大数的运算做为一个子程序,完成求逆的过程,产生公开密钥和私有密钥。

3幂运算
在RSA算法中,需要进行幂的运算,将此运算做成子函数形式。

4利用RSA算法进行加密,并用私有密钥进行解密。

实验4 数字签名算法的实现(3学时)
(一)实验目的:
1 掌握数字签名的原理
2 掌握其中一种数字签名算法
(二)实验类型
设计型
(三)实验步骤及内容:
1选择数字签名算法(数字签名标准DSS或者RSA数字签名)。

2划出签名过程和验证过程的流程图。

3输入DSS算法的各个参数
包括系统公共参数:大素数P,P-1的素因子,以及生成元。

每个用户的公开密钥和私有密钥。

4签名过程
发送方选择一个随机数r,利用签名信息计算出签名信息(R,S),将此信息发送给接受方,信息的传送可以用SOCKET实现。

5验证过程
接受方接受信息后,要用数字签名的验证算法验证签名的正确性。

附录1:实验报告格式
实验报告格式说明:
各位同学请在上机实验后认真撰写实验报告,实验报告成绩作为实验成绩的一部分。

实验报告
课程名称:密码学基础班级:计算机实验成绩:
实验名称:古典密码的实现学号:批阅教师签字:
实验编号:实验1姓名:实验日期:2007 年11月8 日指导教师:组号:实验时间:18时0分-20时0分
一、实验目的
二、实验内容与实验步骤
三、实验环境
操作系统Windows XP
开发环境VC++ 6.0
四、实验过程与分析
//主要设计思想与算法
五、实验结果总结
//测试用例、实验结果
//经验、教训、收获、体会
六、附录
//如果你对这个实验还有其他的解决方案或设想,请在此描述。

//回答实验内容与步骤中提出的问题。

相关文档
最新文档