我构建了一些应用程序来使用ecc加密和解密一些文本。
我的曲线参数是
p = 59
a = 2
b = 2由此产生64点,包括无穷点。
对于加密和解密过程,我使用
e1 = (3, 25)
d (private key) = 53这是我面临的问题
假设我想加密点(45,48),首先生成随机数k = 47,然后计算e1 * k
C1 = k * e1
= 47 * (3, 25)
= (43, 57)
C2 = P + k * e2
= (45, 48) + 47 * (53 * (3, 25))
= (28, 11)但是,当我解密c1和c2时
M = c2 - d x c1
= (28, 11) - 53 * (43, 57)
= (43, 57)我试着用在线计算器检查我的计算结果,但结果甚至不在曲线上。
谁能给我解释一下原因吗?我哪里出错了?对不起我的英语谢谢
发布于 2018-04-15 01:14:06
我可以想象你的计算器不知道如何处理无穷远点,因为它完全依赖于仿射点。你可以计算出
开始{ C_2 *} &= P+ k*e_2 \ &= (45,48) + 47*53*(3,25) \ &= 5*(3,25) + 47*53*(3,25) &(\text{64 }(45,48) = 5*(3,25)) \ &= 2496*(3,25) \ &= \infty &({{}2496\equv0\bmod 64)结束{对齐*}这个计算似乎出了问题,可能是因为它不能在内部表示$\infty$。
https://crypto.stackexchange.com/questions/58307
复制相似问题