小编All*_*opo的帖子

如何用椭圆曲线上的雅可比坐标系计算点加法

我正在编写一个椭圆曲线加密的小项目,当我使用仿射坐标系时,该程序运行良好,这意味着每个点由2个坐标(x',y')表示.

现在我试图用雅可比坐标系代替仿射坐标系,其中每个点由3个坐标(x,y,z),x'= x /z²和y'= y /z³表示.

我想知道如何将仿射坐标转换为雅可比坐标**.在一些教程中,人们使用公式:(x,y)=(x,y,1),这意味着z坐标始终设置为1.但我不确定它是否正确.

然后,对于椭圆曲线上的点加法,计算P(x1,y1,z1)+ Q(x2,y2,z2)= R(x3,y3,z3).我在我的程序中使用了以下公式:

u1 = x1.z2²
u2 = x2.z1²
s1 = y1.z2³
s2 = y2.z1³
h = u2 - u1
r = s2 - s1
x3 = r² - h³ - 2.u1.h²
Y3 = r. (U1.h² - x3) - s1.h³
z3 = z1.z2.h
Run Code Online (Sandbox Code Playgroud)

但是当我测试我的程序时,我会得到一些负坐标,例如(-2854978200,-5344897546224,578).当我尝试使用公式(x'= x /z²,y'= y /z³)将结果转换回仿射坐标系时,我得到(-8545,-27679),实际上x坐标是-8545.689. ... jacobian x坐标不能被z²整除.

如果坐标不是整数,我该怎么办?如果他们是负面的?我已经尝试用我的曲线的字段大小MOD,但结果也不正确.

所以使用雅可比坐标的点(x,y,1)是正确的,但不是唯一的.所有满意(a^2.x,a^3.y,a)的点都是等价的.在我的程序中,曲线是在素数场中定义的,所以当我计算时u1, u2, s1, s2 ...我应该将MO​​D p应用于每个变量?

并且为了将最终结果转换回仿射坐标,例如x坐标,实际上它不是一个除法,它是一个模块化逆?例如,我的曲线是在有限素域定义p=11,并予使用雅可比坐标有一个点(15,3,2),变换雅可比x坐标仿射x坐标,我要计算2^2 = …

cryptography elliptic-curve coordinate-systems

6
推荐指数
2
解决办法
5477
查看次数

是否可以保护我的JPasswordField免受键盘记录器的攻击

我正在编写一个带有JPasswordField的小applet,我想知道是否可以保护我的JPasswordField的内容,以防用户的PC被键盘记录器攻击...

我知道Java无法进行内核级操作,因此无法加密用户的键盘.最终还有其他替代解决方案吗?

非常感谢.

java security applet keylogger jpasswordfield

2
推荐指数
1
解决办法
286
查看次数