首页 > 解决方案 > 如何在python3中应用整数乘以字节变量?

问题描述

我在 Python3 中使用了一个名为fastecdsa的椭圆曲线密码库。我需要将整数 ∈ ℤ (其中是曲线的阶数)乘以以字节为单位的变量 z。例如:

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'

但是在库中,我只能将一个整数乘以曲线上的一个点。我怎样才能应用这个乘法?

标签: pythonpython-3.x

解决方案


您可以使用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'

推荐阅读