2024年4月29日发(作者:)
====Word行业资料分享--可编辑版本--双击可删====
实验三 RSA算法和SHA1哈希算法
古典密码算法曾经被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密。它的主
要对象是文字信息,利用密码算法实现文字信息的加密和解密。古典密码学可以分为代替密码(也叫
做移位密码)和置换密码(也叫做换位密码)两种,其中代替密码典型的有Caesar密码,数乘密码和
仿射变换等,置换密码有单表置换和多表置换等。
一、 实验目的
1. 理解代替密码学加密过程
2. 理解置换密码学加密过程
二、 实验环境
Windows,交换网络结构,每组2人,,密码工具
三、 实验原理
1. 非对称密钥加密也称为公开密钥加密,或者叫做公钥加密算法。使用公开密钥密码的每一个用户
都分别拥有两个密钥:加密密钥和解密密钥,它们两者并不相同,并且由加密密钥得到解密密钥
在计算机上是不可行的。每一个用户的加密密钥都是公开的。因此,加密密钥也称为公开密钥。
所有用户的公开密钥都将记录在作用类似于电话号码薄的密钥本上,而它可以被所有用户访问,
这样每一个用户都可以得到其他所有用户的公开密钥。同时,每一个用户的解密密钥将由用户保
存并严格保密。因此,解密密钥也称为私有密钥。RSA加密算法利用了数论领域的一个事实,那
就是虽然把两个大质数相乘生成一个合数是件十分容易的事情,但要把一个合数分解为两个质数
的乘积却十分困难。合数分解问题目前仍然是数学领域尚未解决的一大难题,至今没有任何高效
的分解方法。它无须收发双方同时参与加密过程,既可以用于保密也可以用于签名,因而非常适
合于电子邮件系统的加密,互连网和信用卡安全系统。
RSA算法的加密和解密过程
在RSA算法中,每个实体有自己的公钥(e,n)及私钥(d,n),其中n = p*q,p,q是两个大素数,
e*d = 1 mod ф(n),显然e应该满足gcd(e,ф(n))= 1。实体B加密消息m,将密文在公开信道上
传送给实体A。实体A接到密文后对其解密。具体算法如下。
公钥的生成算法
RSA的公钥生成算法十分简单,可以分为四步:
a) 选择两个素数,p和q;
b) 计算n = p×q和z = (p-1)×(q-1);
c) 选择一个与z互质的数d;
d) 找出一个e,使得e×d = 1 mod z。
公开密钥是由(e,n)构成,私有密钥由(d,n)构成。
加密算法
实体B的操作如下:
a) 得到实体A的真实公钥(e,n);
b) 把消息表示成整数m,0<m≤n-1;
c) 使用平方-乘积算法,计算C = Ek(m) = me mod n;
d) 将密文C发送给实体A。
解密算法
实体A接收到密文C,使用自己的私钥d计算m = Dk(C)= Cd mod n,m∈Zn。
源-于-网-络-收-集
====Word行业资料分享--可编辑版本--双击可删====
我们选择p = 3,q = 11,得到n = 33,z =(p-1)×(q-1)= 2×10 = 20。由于和20互质,故设d = 7。
对于所选的d = 7,解方程7×e = 1 mod 20,可以得到e = 3。
在我们的例子中,由于所选的p和q太小,破译当然很容易,我们的例子只是用来说明此算法的
原理。对于明文SUZANNE,RSA的加密和解密过程如表3-1所示。
表3-1 RSA加解密过程示例
加密
明文(m)
符
号
S
U
Z
A
N
N
E
m
e
解密
密
文(C)
密文
(C)
3
C
d
明文(m)
值
19
21
26
1
14
14
5
m
3
m(mod33) m(mod33)
28
21
20
1
5
5
26
28
21
20
1
5
5
26
3
C
7
值
19
21
26
1
14
14
5
符号
S
U
Z
A
N
N
E
6859
9261
17576
1
2744
2744
125
1801088541
1280000000
1
78125
78125
8031810176
2. 散列函数(Hash Functions)就是能提供数据完整性保障的一个重要工具。Hash函数常用来构造数据
的短“指纹”,消息的发送者使用所有的消息产生一个短“指纹”,并将该短“指纹”与消息一起
传输给接收者。即使数据存储在不安全的地方,接收者重新计算数据的指纹,并验证指纹是否改
变,就能够检测数据的完整性。这是因为一旦数据在中途被破坏或改变,短指纹就不再正确。
散列函数是一个函数,它以一个变长的报文作为输入,并产生一个定长的散列码,有时也称为报
文摘要,作为函数的输出。散列函数最主要的作用是用于鉴别,鉴别在网络安全中起到举足轻重
的地位。鉴别的目的有以下两个:第一,验证信息的发送者不是冒充的,同时发信息者也不能抵
赖,此为信源识别;第二,验证信息完整性,在传递或存储过程中未被篡改,重放或延迟等。
(1) SHA1哈希算法流程
对于任意长度的明文,SHA1首先对其进行分组,使得每一组的长度为512位,然后对这些明文分
组反复重复处理。
对于每个明文分组的摘要生成过程如下:
将512位的明文分组划分为16个子明文分组,每个子明文分组为32位。
申请5个32位的链接变量,记为A、B、C、D、E。
16份子明文分组扩展为80份。
80份子明文分组进行4轮运算。
链接变量与初始链接变量进行求和运算。
链接变量作为下一个明文分组的输入重复进行以上操作。
最后,5个链接变量里面的数据就是SHA1摘要。
(2) SHA1的分组过程
对于任意长度的明文,SHA1的明文分组过程与MD5相类似,首先需要对明文添加位数,使明文
总长度为448(mod512)位。在明文后添加位的方法是第一个添加位是l,其余都是0。然后将真正明
文的长度(没有添加位以前的明文长度)以64位表示,附加于前面已添加过位的明文后,此时的明文
长度正好是512位的倍数。与MD5不同的是SHA1的原始报文长度不能超过2的64次方,另外SHA1
源-于-网-络-收-集
发布评论