密码学基础实验报告模板

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

西安邮电大学

通信与信息工程学院

密码学报告

专业班级: 学生姓名: 学号(班内序号):

2015年 12月 25 日

——————————————————————————

线————————————————————————————————

报告份数:

实验一棋盘密码

一.实验目的

编写实现棋盘密码体制的程序并进行验证

二.实验要求

1.能对明文中出现的26个英文字母(包括大小写)及标点符号等加密。2.从键盘输入密钥并输出棋盘进行验证。

3.能对给定的明文或密文进行正确的加密和解密。

三.实验原理

古代最早的棋盘密码体制是这样的:将26个字母排列在一个5*5的方格里,其中i 和j填在同一个里,每个字母对应一数αβ,其中αβ分别是该字母所在的行、列标号。这样就可以将明文的字母集合转换成密文的数字集合。

四.实验步骤

1.编写实现棋盘密码体制的程序,包括加密和解密。

2.运行程序,输入棋盘密钥。

3.选择加密,并输入明文,根据棋盘验证加密结果是否正确。

4.选择解密,并输入密文,根据棋盘验证解密结果是否正确。

5.流程图:

五.实验结果

实验二仿射密码

一.实验目的

编写实现仿射密码体制的程序并进行验证。

二、实验要求

1 给出仿射密码的的加密程序。

2 要求密钥从键盘输入。

3 掌握仿射密码的密码译制,弄清其加密过程。

三、实验原理

令P = C = Z26 , K = { (a,b) ∈Z26 * Z26 },对任意的(a , b) ∈K,定义:加密:y = e k(x) = (a * x + b) mod 26,

解密:d k(y) = a -1 ( y - b) mod 26 .

a ,

b 为密钥,密钥空间为26 ×26。

在加密的过程中,要使所加密有唯一的解,必须满足a 与26互素。这是由下面的定理得出。

定理:设 a ∈Z m , a 为任意的,b ∈Z m ,同余方程:

a * x ≡

b mod m 有唯一解的充要条件是:a 与m 互素。

四、实验流程

五.实验结果

实验三 可逆性检验

一、实验目的:

1熟练掌握欧几里德算法,并学会利用其求逆。

2根据改进的欧几里德算法用VC++语言编写程序实现计算n a mod 1

-的值。

二、实验要求:

编写出来的程序,要求可以判定a 和n 是否互素,a 在n 上是否可逆,逆元是否唯一,相关的参数需要从键盘输入。 三、实验原理:

对于任一个正整数n ,Z n 是一个整环,a 属于Z n ,存在a b 1-=属于 Z n 使得a*b ≡1 mod n 的充要条件是gcd{n,a}=1(gcd{n,a}表示n 和a 的最大公约数);

若gcd{n,a}=1,由最大公约数定理,存在x 和y ,使得gcd{n ,a}=x*n+y*a=1即存在y 使得b*y ≡1 mod n ;所以a y 1

-=。 四.实验流程

五.实验结果

实验四扩展的欧几里德算法

一.实验目的

编写利用改进的欧几里得算法计算逆元的程序。

二.实验要求

1.相关参数从键盘输入。

2.判断逆元是否存在,若存在,计算逆元。

三.实验原理

对任一正整数n,Z n做成环,假设a ∈Z n则a存在乘法逆的充要条件是(a,n)= 1.通过辗转相除法可求出两个正整数a 和n的最大公因子r。若r = 1,则a,n互素,将原来的ojilide算法进行如下改进后,可以在a,n互素的条件下求的a的乘法逆。

构造两个序列:{t0,t1,…,t m}和{s0,s1,…,s m},初始化为:

t0 = 0 , t1 = 1, t j = t j-2– q j-1 * t j-1 , j≥2

s0 = 1, s1 = 0,s j = s j-2– q j-1 * s j-1 , j≥2

且:对于0≤j≤m,r j = s j * r0 + t j * r1

改进的ojilide算法描述如下:

初始化:a0 = a; n0 = n; s0 = 1; t0 = 0; s = 0; t = 1; q = n0/a0; r = n0 - q*a0; 算法流程:

do

{

temp = t0 - q*t;

t0 = t;

t = temp;

temp = s0 - q*s;

s0 = s;

s = temp;

n0 = a0;

a0 = r;

q = n0/a0;

r = n0 - q*a0;

}while(r > 0);

若r = 1,则a-1 mod n = t mod n 验证如下:

∵(a,n)= 1 ∴s m * n + t m * a = 1

两边同取模n,得:t m * a mod n = 1

因此a-1 mod n = t m mod n 。t m即程序中最后一步的t。

四.实验步骤

1.编写程序。

2.运行程序,输入不同范围内的a 和n,求a的逆元。

3.对实验结果进行验证。

4.流程图为:

五.实验结果

实验五RSA加密算法

一、实验目的:

1.用VC++实现RSA加密算法,并且该算法应该具备素性检测的功能。

2.熟悉RSA加密算法的原理以及欧拉定理在其中的应用,加深对RSA密码体制的理解,并能运用该算法中所使用的基本定理。

二、实验要求:

1、复习RSA密码体制、欧几里德算法以及欧拉定理;

2、在VC++中编写该密码体制,并运行出其结果,将结果保存在实验报告中。

三、实验原理:

1 RSA加密体制:设n=pq,其中p和q是两个素数,P=C=Z,定义:

K={(n,p,q,a,b)|ab%Q(n)=1},对于k属于K,其中:

x,y属于Z(n)公钥:(n,b);私钥:(p,q,a);

2 成两个大的素数p和q:用来作为加密算法中的私钥,并且用来生成n,

作为该程序的公钥;

四、实验流程

相关文档
最新文档