密码学基础实验报告模板
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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,
作为该程序的公钥;
四、实验流程