- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《应用密码学》实验
应用密码学实验
实验名称 应用密码学实验 课程名称 应用密码学 课程号 学院 ( 系) 理学院数
学系 专业 信息与计算科学 班级 信计 1 班 学生姓名 小曾 学号 成绩 :
一、实验目的
熟悉密码学的相关知识
练习将密码学理论知识与 matlab 编程结合起来二、实验内容
设明文消息为 china ,试用凯撒密码对其进行加密,然后在进行解密。
2.ElGamal 公钥密码算法
设 p=2579,a=2,a 为模 p 的本原元,用户 B 选择 x=765 作为自己的私钥。用户
A 想要将消息 m=1299传送给用户 B 进行加密和解密运算
移位操作
设 x 为任意二进制数
(1)x<<n 表示 x 向左移 n 位,右边空出的 n 位用 0 填充 ;
(2)x>>n 表示 x 向右移 n 位,左边空出的 n 位用 0 填充 ;
设 X 是一个字 ( 字长为 ω) ,0?n<ω 是一个整数,定义
X<<<n=(X<<n)?(X>>ω -n), 即 :<<<是 ω 为循环左移位操作。
4.DSA数字签名算法
假设素数 q=23,p=47, 并取 h=17, 用户 A 选择了 x=10 作为自己签名的私钥和签名随机数 k=19 来对消息 M进行签名,消息 M的散列吗 H(M)=15, 计算消息 M的签名以及签名验证。
三、实验原理
1. 凯撒密码的原理
:
EEZZEmmkmMkK,,,, ,,{:,()(mod26)|,}
加密变换,
2626K
DDZZDcckcCkK,,,,,,{:,()(mod26)|,}
解密变换,
2626K
Z 解密后再把中的元素转换为英文字母 26
2.ElGamal 公钥密码的原理 :
* (1) 选取一个大素数 p, 是 p 的一个本原元。随机生成整数 x, a,Zpxy,amodp 计算 以(p,a,y) 作为公钥, x 作为秘密密钥
加密 :
明文 m<p
选择一个整数 k,2<=k<=p-2 计算 xc1,amodp
kc2,m,ymodp
密文以 (c1,c2) 发送给 B
解密
x,1 m,c2,(c1)modp
移位操作
设 x 为任意二进制数
(1)x<<n 表示 x 向左移 n 位,右边空出的 n 位用 0 填充 ; (2)x>>n 表示 x 向右
移 n 位,左边空出的 n 位用 0 填充 ; (3) 设 X 是一个字 ( 字长为 ω) ,0?n<ω 是一个整数,定义 X<<<n=(X<<n)?(X>>ω-n), 即:<<< 是 ω 为循环左移位操作。
DSA 数字签名算法的原理 :
LL,122,5121024,,,,PL(1)p 是一个素数,要求 , 并且 L 为 64 的倍数,即位长度
在
512 到 1024 之间,长度增量为 64 位。,q(2)q 是 p-1 的素因子,,即 q 的长度为 160 位。
(1)/pq,(1)/pq,ghp,modghp,mod(3) ,其中 h 是一个整数,满足 1<h<p-1 并且>1。 (4) 随机选择整数 x 作为用户的私钥,要求 0<x<q。
xygp,mod(5) 计算用户的公钥。显然,给定 x 计算 y 是容易的,但是给定 y 求 x
是
离散对数问题。
在上述参数中, p、 q 以及 g 是公开的系统参数, x 和 y 分别是用户的私钥和公
钥。
四、程序清单与运行结果
凯撒密码的加解密
加密过程如下 :
建立名为
kaisa.m
的函数文件,程序如下
:
function y=kaisa(I) %I
为明文字符串 如:'china' k=3; %k
值可更改,当
k=3 时就为凯撒密码了
A=['a','b','c','d','e','f','g','h','i','j','k','l','m',...
'n','o','p','q','r','s','t','u','v','w','x','y','z']; for i=1:length(I)
for j=1:26
if I(i)==A(j)
p=mod(j+k,26);
y(i)=A(p);
end
end
end
在命令窗口中输入如下命令及所得结果 : >>kaisa('china')
ans =
fklqd
解密过程如下 :
建立名为 ikaisa.m 的函数文件,程序如下 : function y=ikaisa(I) % I 为明
文字符串 如 :'china'
k=3; %k 值可更改,当 k=3 时就为凯撒密码了
A=['a','b','c','d','e','f','g','h','i','j','k','l','m',...
'n','o','p','q'
文档评论(0)