三、有圆曲线密码按照如下算法进行加密:首先选取一条椭圆曲线, 并得E(ab),将明文消息m嵌入到曲线上得点P,再对点P做加密变换。取E(a,b)的一个生成元G,作为公开参数。用户A选整数nn 作为秘密钥,并以PA=nG作为公开钥。任一用户B若想向A发 送消息Pm,可选取一随机正整数k,产生点对C1=kG,C2=Pm+kPA 密文为Cm={C1,C2},B将Cm发送给A A用自己的秘密钥解密C2-nC1可得明文Pm 若椭圆曲线为E11(1,6),生成元G=(2,7),用户A的私钥=7, 请求出(1)A的公钥(2)明文Pm=(10,9),k=3求出对应的密文 Cm? (3)显示接收方A从密文恢复出明文消息的过程。(40分)
时间: 2023-08-22 08:06:35 浏览: 144
好的,让我来回答你的问题。
1. 用户A的公钥是多少?
根据题目中给出的信息,用户A的私钥为7,生成元为G=(2,7),椭圆曲线为E11(1,6)。因此,用户A的公钥为PA=nG=7G。在椭圆曲线上进行点的加法,可以使用倍点算法,即将点G加上自身,然后再加上自身,循环进行,直到加上私钥值为止。具体计算过程如下:
2G=(2,7)+(2,7)=(3,-1)
3G=(2,7)+(3,-1)=(1,-6)
4G=(2,7)+(1,-6)=(10,-29)
5G=(2,7)+(10,-29)=(4,-5)
6G=(2,7)+(4,-5)=(44,-237)
7G=(2,7)+(44,-237)=(10,9)
因此,用户A的公钥为PA=7G=(10,9)。
2. 密文Cm是多少?
根据题目中给出的信息,明文消息为Pm=(10,9),随机正整数k为3,用户B需要产生点对C1=kG=3G=(44,-237),C2=Pm+kPA=(10,9)+3(10,9)=(40,-63)。因此,密文Cm={C1,C2}={(44,-237),(40,-63)}。
3. 显示接收方A从密文恢复出明文消息的过程。
接收方A收到密文Cm后,需要使用自己的私钥n=7来解密C2-nC1,从而恢复出明文消息Pm。具体计算过程如下:
C2-nC1=(40,-63)-7(44,-237)=(40,-63)-(308,-1659)=(-268,1596)
由于椭圆曲线为E11(1,6),因此其方程为y^2=x^3+x+6,将x坐标-268代入该方程,可得y^2=(-268)^3-268+6=1596^2,因此y=1596或y=-1596。由于题目中要求点Pm在曲线上,因此取y=1596,即明文消息为Pm=(-268,1596)。
阅读全文