CTF_打卡day15
跟着《深入浅出密码学——常用加密技术原理和应用》学
P211-225
第八章《基于离散对数问题的公钥密码体制》
Elgamal加密方案
示例:
习题
8.1
(1)
| a | 1 | 2 | 3 | 4 |
|–|--|
| ord(a) | 1 | 4 | 4 | 2 |
a^1=1
a^1=2 ; a^2=4 ; a^3=8=3mod5 ; a^4=16=1mod5
a^1=3 ; a^2=9=4mod5 ; a^3=27=2mod5 ; a^4=81=1mod5
a^1=4 ; a^2=16=1mod5
(2)
| a | 1 | 2 | 3 | 4 | 5 | 6 |
|–|--|
| ord(a) | 1 | 3 | 6 | 3 | 6 | 2 |
(3)
| a | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
|–|--|
| ord(a) | 1 | 12 | 3 | 6 | 4 | 12 | 12 | 4 | 3 | 6 | 12 | 2 |
8.2
请使用参数p=467,α=2及以下值,计算DHKE方案中的两个公钥和一个共同**。所有情况都需要计算Alice和Bob之间的共同**。这也是对你得到的结果的一个恰当检查。
(1)a=3,b=5
(2)a=400,b=134
(3)a=228,b=57
计算方法可见DAY14中关于DHKE的示例。这里只简单列出:
(1)
A=K(pub,A)=α^a = 2^3 =8 mod 467
B=K(pub,B)=α^b = 2^5 = 32 mod 467
K(ab)=B^a = A^b = 32^3 = 8^5 =78 mod 467
(2)
A=K(pub,A)=137
B=K(pub,B)=84
K(ab)=90
(3)
K(pub,A)=394
K(pub,B)=313
K(ab)=206
8.3
下面使用与问题8.5相同的素数p=467设计另一个DHKE方案。然而,这次使用的元素α=4。元素4的阶为233,因此它可以生成一个拥有233个元素的子群。计算下面参数对应的k(ab):
(1)a=400,b=134
(2)a=167,b=134
为什么这两个会话**是相同的?
(1)
A=4^400 = 89 mod 467,k(ab)=161
(2)
A=4^167 =89 mod 467,k(ab)=161
因为4^400 与 4^167 模467同余
模同余-》https://blog.****.net/kikyou132/article/details/106291526/
8.4
请使用Elgamal方案(p=467和α=2)加密以下消息:
(1)k(pr)=d=105,i=213,x=33
(2)k(pr)=d=105,i=123,x=33
(3)k(pr)=d=300,i=45,x=248
(4)k(pr)=d=300,i=47,x=248
解:
(1)β=α^d = 2^105=444 mod 467
ke=α^i = 2^213 =29 mod 467
km=β^i =444^213 =292 mod 467
y = xkm=33292 =296 mod 467
(ke,y)=(29,296);x=33
(2)β=α^d = 2^105=444 mod 467
ke=α^i = 2^123 =125 mod 467
km=β^i =444^123 =278 mod 467
y = xkm=33278 =301 mod 467
(ke,y)=(125,301);x=33
(3)β=α^d = 2^300=317 mod 467
ke=α^i = 2^45 =80 mod 467
km=β^i =317^45 =12 mod 467
y = xkm=24812 =174 mod 467
(ke,y)=(80,174);x=248
(4)β=α^d = 2^300=317 mod 467
ke=α^i = 2^47 =320 mod 467
km=β^i =317^47 =74 mod 467
y = xkm=24874 =139 mod 467
(ke,y)=(320,139);x=248