在Elgamal系统中, p=13, g=7, x=5, 如果A要签名H(m)=7,随机选择k=5,签名是什么? B如何验证?
时间: 2023-06-27 09:06:42 浏览: 89
根据Elgamal数字签名算法,A的签名包括两个部分,即r和s。
首先,A需要计算r = g^k mod p = 7^5 mod 13 = 10。
然后,A需要计算s = (H(m) - x*r) * k^-1 mod (p-1) = (7 - 5*10) * 5^-1 mod 12 = 8。
因此,A的签名为 (r, s) = (10, 8)。
B要验证A的签名,需要进行以下步骤:
1. 计算y1 = g^H(m) mod p = 7^7 mod 13 = 11。
2. 计算y2 = (x^r * r^s) mod p = (5^10 * 10^8) mod 13 = 11。
3. 如果y1 = y2,则A的签名是有效的,否则无效。
因此,在本例中,B可以验证A的签名,因为y1 = y2 = 11。
相关问题
在ElGamal系统中, α=7, p=13, xa=5, xb=3. a) 假定A加密传送m=3给B,随机选择k=8,密文是什么?
在 ElGamal 系统中,公钥为 $(p, \alpha, \beta)$,私钥为 $x$。其中,$p$ 是一个大素数,$\alpha$ 是模 $p$ 的原根,$\beta = \alpha^x \bmod p$ 是公钥。在这个系统中,如果 A 想要向 B 发送一条消息 $m$,则可以执行以下步骤:
1. A 选择一个随机数 $k$,$1 \leq k \leq p-2$。
2. A 计算 $C_1 = \alpha^k \bmod p$ 和 $C_2 = m \cdot \beta^k \bmod p$。
3. A 将密文 $(C_1, C_2)$ 发送给 B。
B 收到密文 $(C_1, C_2)$ 后,可以执行以下步骤来解密:
1. B 计算 $M = C_2 \cdot (C_1^x)^{-1} \bmod p$。
2. 解密后的明文为 $m = M$。
现在,根据题目中的参数,我们可以计算出:
- 公钥:$(p, \alpha, \beta) = (13, 7, 11)$。
- 私钥:$x = 3$。
现在,A 想要向 B 发送 $m = 3$。A 选择一个随机数 $k = 8$,然后计算:
$$
\begin{aligned}
C_1 &= \alpha^k \bmod p = 7^8 \bmod 13 = 3 \\
C_2 &= m \cdot \beta^k \bmod p = 3 \cdot 11^8 \bmod 13 = 9
\end{aligned}
$$
因此,密文为 $(C_1, C_2) = (3, 9)$。A 将密文发送给 B,B 收到密文后,计算:
$$
\begin{aligned}
M &= C_2 \cdot (C_1^x)^{-1} \bmod p \\
&= 9 \cdot (3^3)^{-1} \bmod 13 \\
&= 9 \cdot 5 \bmod 13 \\
&= 11
\end{aligned}
$$
因此,解密后的明文为 $m = 11$。
3. 在ElGamal系统中, α=7, p=13, xa=5, xb=3. a) 假定A加密传送m=3给B,随机选择k=8,密文是什么?
在ElGamal密码系统中,加密过程如下:
1. A选择一个随机数k,并且计算出C1 = α^k mod p
2. A计算出C2 = m * xb^k mod p
3. A将密文发送给B,密文包括C1和C2
根据题目中给出的参数,我们可以按照上述步骤来加密明文m=3:
1. A选择一个随机数k=8,并且计算出C1 = α^k mod p = 7^8 mod 13 = 2
2. A计算出C2 = m * xb^k mod p = 3 * 3^8 mod 13 = 9
3. A将密文发送给B,密文为(2, 9)
因此,当A使用随机数k=8对明文m=3进行加密时,密文为(2, 9)。