如何在python3中应用整数与字节变量的乘法?

2024-05-13 18:52:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python3中使用一个名为fastecdsa的椭圆曲线密码库。我需要乘以一个整数𝑑 ∈ ℤ𝕢 (在哪里𝑞 是以字节为单位的变量z的曲线顺序)。例如:

d=28521545799876732050641041876836851290321351626845294786203503879392791060212

z=b'\xf7LC\xf0\xd5\xc4z\xb7\x84\x02\xd7f\x1b\x1a\xf3\xcf@\xfaf\xd0I\xb0l+t\xf9\x86\xf4\x14(\x00x'

但是在库中,我只能将一个整数乘以曲线上的一个点。我如何应用这个乘法呢


Tags: 密码字节顺序单位整数曲线python3椭圆
1条回答
网友
1楼 · 发布于 2024-05-13 18:52:43

您可以使用int.from_bytes将其转换为int-

d = 28521545799876732050641018768368512903213511626845294786203503879392791060212
z = b'\xf7LC\xf0\xd5\xc4z\xb7\x84\x02\xd7f\x1b\x1a\xf3\xcf@\xfaf\xd0I\xb0l+t\xf9\x86\xf4\x14(\x00x'

z_int = int.from_bytes(z,'big')
print(z_int)
111856022886894735268286046795586803147921415655418728750948058279775245435000

然后,在乘法之后,如果需要,可以使用int.to_bytes()-

z_int.to_bytes(32, 'big') #change z_int to the output of multiplication
b'\xf7LC\xf0\xd5\xc4z\xb7\x84\x02\xd7f\x1b\x1a\xf3\xcf@\xfaf\xd0I\xb0l+t\xf9\x86\xf4\x14(\x00x'

相关问题 更多 >