公钥密码
第1题
因此首先使用 S h a n k s Shanks Shanks算法计算出 a a a的值,如下:
因此明文应为:
d k ( y 1 , y 2 ) = y 2 ( y 1 a ) − 1 = 5 ∗ ( 2 27 ) − 1 = 12 d_k(y_1,y_2)=y_2(y_1^a)^{-1}=5*(2^{27})^{-1}=12 dk(y1,y2)=y2(y1a)−1=5∗(227)−1=12
第2题
已知: 5 x = 3 , 5 y = 4 5^x=3,5^y=4 5x=3,5y=4,求 5 x y 5^{xy} 5xy:
首先利用 S h a n k s Shanks Shanks算法计算出 x x x的值,如下:
然后计算 4 x = 4 20 ≡ 36 ( m o d 47 ) 4^x=4^{20}\equiv 36(mod\ 47) 4x=420≡36(mod 47)。
第3题
因此,计算 φ ( N ) = 4620 \varphi(N)=4620 φ(N)=4620,再计算 d ≡ e − 1 ≡ 4171 ( m o d N ) d\equiv e^{-1}\equiv 4171(mod\ N) d≡e−1≡4171(mod N)。
所以消息2的签名为 2 4171 ≡ 1626 ( m o d N ) 2^{4171}\equiv1626(mod\ N) 24171≡1626(mod N)。
该题需要注意的是:大整数分解算法&辗转相除求逆。
第4题
一般方法
在椭圆曲线上计算 P ( x 1 , y 1 ) + Q ( x 2 , y 2 ) P(x_1,y_1)+Q(x_2,y_2) P(x1,y1)+Q(x2,y2):
首先计算 λ \lambda λ如下:
λ = { y 2 − y 1 x 2 − x 1 , P ≠ Q 3 x 1 2 + a 2 y 1 , P = Q \lambda=\begin{cases} &\frac{y_2-y_1}{x_2-x_1},\ P\not=Q\\ &\frac{3x_1^2+a}{2y_1},\ P=Q \end{cases} λ={
x2−x1y2−y1, P=Q2y13x12+a, P=Q
注意当$P=Q$时该式子可以看作为导数相除。
再计算:
x 3 = λ 2 − x 1 − x 2 y 3 = λ ( x 1 − x 3 ) − y 1 \begin{aligned} x_3&=\lambda^2-x_1-x_2\\ y_3&=\lambda(x_1-x_3)-y_1 \end{aligned} x3y3=λ2−x1−x2=λ(x1−x3)−y1
计算过程
先计算 2 P 2P 2P的值,此时 P = Q P=Q P=Q,所以有:
λ 1 = 3 ∗ 7 2 + 1 2 ∗ 3 ≡ 74 ∗ 3 − 1 ( m o d 19 ) ≡ 16 ( m o d 19 ) \lambda_1=\frac{3*7^2+1}{2*3}\equiv74*3^{-1}(mod\ 19)\equiv16(mod\ 19) λ1=2∗33∗72+1≡74∗3−1(mod 19)≡16(mod 19)
所以有 2 P = ( x 3 , y 3 ) = ( 16 , 3 ) 2P=(x_3,y_3)=(16,3) 2P=(x3,y3)=(16,3),再计算 λ 2 \lambda_2 λ2,此时 P ≠ Q P\not=Q P=Q,因此:
λ 2 = 3 − 3 7 − 16 = 0 \lambda_2=\frac{3-3}{7-16}=0 λ2=7−163−3=0
所以有 3 P = ( x 4 , y 4 ) = ( 15 , 16 ) 3P=(x_4,y_4)=(15,16) 3P=(x4,y4)=(15,16)。