第一章
仿射密码
c=Ea,b(m)≡am+b(mod 26)
m=Da,b(c)≡a-1(c-b)(mod 26)
Playfair
1.利用Playfair算法加密明文“I am too tired”,密钥是:I am a student。且约定当需要填充的时侯利用’x’填充,请写出其明文及密文分组。
i | a | m | s | t |
u | d | e | n | b |
c | f | g | h | k |
l | o | p | q | r |
v | w | x | y | z |
字母矩阵表
明文 | ia | mt | ox | ot | ir | ed | ||
密文 | am | si | pw | ra | tl | ne | ||
解密 | ia | mt | ox | ot | ir | ed |
乘法逆元
第二章
线性反馈移位寄存器
流密码作业
1. 3级线性反馈移位寄存器在c3=1时可有4种线性反馈函数,设其初始状态为(a1,a2,a3)=(1,0,1),求各线性反馈函数的输出序列及周期。
设反馈函数为f(x)=a1⊕c2a2⊕c1a3
c2=1 c1=1 a1⊕a2⊕a3 101
2. 设n=4,f(a1,a2,a3,a4)=a1⊕a4⊕1⊕a2a3,初始状态为(a1,a2,a3,a4)=(1,1,0,1),求此非线性反馈移位寄存器的输出序列及周期。
a4 | a3 | a2 | a1 | out |
1 | 0 | 1 | 1 | 1 |
1 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 0 | 0 |
1 | 1 | 1 | 1 | 1 |
0 | 1 | 1 | 1 | 1 |
1 | 0 | 1 | 1 | 1 |
序列:11011 11011...
周期:5
第三章
DES
轮结构
分组密码作业
1在8比特CFB模式中,如果在密文字符中出现1比特的错误,问该错误能传播多远?
64/8+1=9
答:错误传播9组
2证明DES的解密变换是加密变换的逆。
第四章
模运算
模指数运算
欧拉函数
任意给定正整数n,请问在小于等于n的正整数之中,有多少个与n构成互质关系?(比如,在1到8之中,有多少个数与8构成互质关系?)计算这个值的方法就叫做欧拉函数,以φ(n)表示。
- 计算8的欧拉函数,和8互质的 1、2、3、4、5、6、7、8
φ(8) = 4
如果n是质数的某一个次方,即 n = p^k (p为质数,k为大于等于1的整数),则φ(n) = φ(p^k) = p^k - p^(k-1)。也就是φ(8) = φ(2^3) =2^3 - 2^2 = 8 -4 = 4 - 计算7的欧拉函数,和7互质的 1、2、3、4、5、6、7
φ(7) = 6
如果n是质数,则 φ(n)=n-1 。 因为质数与小于它的每一个数,都构成互质关系。比如5与1、2、3、4都构成互质关系。 - 计算56的欧拉函数
φ(56) = φ(8) * φ(7) = 4 * 6 = 24
如果n可以分解成两个互质的整数之积,即 n = p * k ,则φ(n) = φ(p * k) = φ(p1)*φ(p2)
欧拉定理
如果两个正整数m和n互质,那么m的φ(n)次方减去1,可以被n整除。
费马小定理
欧拉定理的特殊情况,如果两个正整数m和n互质,而且n为质数!那么φ(n)结果就是n-1。
RSA算法计算步骤
RSA 算法依赖于大数在因数分解时固有的计算难度。密码系统的每个用户都使用下列步骤描述的算法产生一对公钥和私钥:
(1)选择两个大的质数,计算出模数 N = p * q
(2)计算欧拉函数φ(N) = (p-1) * (q-1),然后选择一个e(1<e<φ),并且e和φ互质
(3)求取e的模反数d,计算方法为:e * d ≡ 1 (mod φ)
(4)对明文m进行加密:c = m^e mod N,可以得到密文c。
(5)对密文c进行解密:m = c^d mod N,可以得到明文m。
整理:
p 和 q:两个大的质数,是另一个参数N的的两个因子。
N:大整数,可以称之为模数
e 和 d:模反数
c 和 m:密文和明文
(N, e):公钥
(N, d):私钥
密钥长度:n以二进制表示的的位数,例如密钥长度为512代表n用二进制表示的长度为512bit。
ElGamal密码体制
1.选择一个大质数p,p的本原元g g^∮(p)≡1 mod p
2.选择一个随机数a
3.g1=g^a mod p
公钥(p,g,g1)私钥 a
加密:
选择随机数k
c1=g^k mod p
c2=g1^k * m mod p
解密
m=c1*c2^(-a)
ECC椭圆曲线加密
【ECC加密算法】| ECC加密原理详解| 椭圆曲线加密| 密码学| 信息安全_哔哩哔哩_bilibili
求题时可能会出现负的,例如-G
即G=(x,y)
-G=-(x,y)=(x,-y mod p )
利用椭圆曲线实现ElGamal体制
公钥PA=nAG
Cm={kG,Pm+kPA}
Pm + k PA - nA k G= Pm + k (nAG)=Pm
公钥密码作业
1用Fermat定理求3^201mod 11.
由fermat定理得,3^10 mod 11 = 1mod 11
(3^10)^20 mod 11 = 1 mod 11
3^201 mod 11 = 3 * 3^200 mod 11 = (3mod11 *2^200 mod11) mod 11=3mod 11 =3
2求同余方程式
M=3*5*7=105
M1=M/m1=35
M2=M/m2=21
M3=M/m3=15
e1*M1≡1 mod m1
e2*M2≡1 mod m2
e2*21≡1 mod 5
e3*M1≡1 mod m3
得e1=2,e2=1,e3=1
x=(m1*e1*M1+m2*e2*M2+m1*e3*M3) mod M
=(2*2*35+1*1*21+1*1*15) mod 105
=71
3. 设通信双方使用RSA加密体制,接收方的公开钥是(e,n)=(5,35),接收到的密文是c=10,求明文m。
由n=35得 p=5 q=7
∮(n)=4*6=24
由d*e≡1 mod ∮(n)
得 d=5
m=c^d mod n =10^5 mod 35=5
4. ElGamal加密体制
在ElGamal加密体制中,设素数p=71,本原根g=7,
(1)如果接收方B的公开钥是yb=3,发送方A选择的随机整数k=2,求明文m=30所对应的密文。
c1=7^2 mod 71=49
c2=3^2 * 30 mod 71=57
密文(49,71)
(2)如果A选择另一个随机整数k,使得明文m=30加密后的密文是c=(59,c2),求c2。
59=7^k mod 71
k=3
c2=3^3 * 30 mod71=29
5. 已知点G=(2,7)在椭圆曲线E11(1,6)上,求2G和3G。
2G:
k=3 * 2^2+1/2*7=13/14 mod 11=8
x3=8^2-2-2mod11=60mod11=5
y3=8(2-5)-7=2
3G:
3=011=2G+1G
k=2-7/5-2 mod11 = -5/3 mod11=2
x3=4-5-2 mod11=8
y3=2(2-8)-7 mod 11 =3
6
(1)PA=nAG=4g+2g+1g=2g+2g+2g+1g
(2)c1=kG
c2=Pm+kPA
(3)Pm+kPA-nAkG=Pm+knAG-nAkG=Pm
第五章
Diffie-Hellman(DH)密钥交换算法
Diffie-Hellman密钥交换算法| 公钥加密| DH算法| 密码学| 信息安全_哔哩哔哩_bilibili
在Diffie-Hellman密钥交换过程中,设大素数p=11,a=2是p的本原根。
(1)用户A的公开钥YA=9,求其秘密钥XA。
(2)设用户B的公开钥YB=3,求A和B的共享密钥K。
(1)YA=a^XB mod p
9=2^XA mod 11
XA=6
(2)k=YB^XA mod p
=3^6 mod 11
=3
第六章 消息认证和哈希函数
sha
下面说明如何由当前的输入分组(512比特长)导出 Wt(32比特长)。前16个值(即 W0 - W15 )直接取为输入分组的16个相应的字,其余值(即 W16 - W79 )取为:
BB84 协议
BB84协议是第一个量子密码通信协议,1984年由Benntt和Brassard提出,该协议采用4个量子态(如右旋、左旋、水平和垂直偏振态)来实现量子密钥分配,事先约定:左旋和水平偏振态代表比特“0”,右旋和垂直偏振态代表比特“1””。
量子密钥分配的操作步骤如下。
(1)用户A向用户B发送多个光子,每个光子随机地选择右旋、左旋、水平或垂直4种偏振态中的任一种。
(2)用户B随机地选择线偏振基或圆偏振基来测量光子的偏振态,并记录下他的测量结果。
(3)用户B在公开信道上告诉用户A,他每次所选择的是哪种测量基,但不公布测量结果。
(4)用户A在了解到用户B的测量基之后,便可确定用户B的测量基中哪些是选对的,哪些是选错的;他通过公开信道告诉用户B留下选对基的测量结果,这样用户A和用户B就可以50%成功率建立完全相同的随机数序列。
(5)用户B从已建立的随机比特序列中抽样部分比特,一般为1 / 3,并发送给用户A。
(6)用户A检查用户B发送来的比特与自己发出的比特是否一致,如果没有窃听行为发生,则它们应该是一致的;否则,肯定发生了窃听行为。
(7)如果没有窃听行为发生,双方可以约定用剩余的2 / 3比特作为共享的会话密钥,从而实现了密钥的分配。用户A和用户B依此办法可获得足够多的比特位。