如何从曲线上的点(SECP256K1或P-256)导出tezos公钥
1 个回答
- 投票数
-
- 2019-02-27
Tezos中的公钥以压缩形式存储:
<1 byte prefix>|X
- 如果Y为偶数,则前缀为b'\ x02',否则为b'\ x03',现在您的压缩密钥长度为33个字节;
- 为secp256k1添加tezos前缀b'\ x03 \ xfe \ xe2V',为p256添加b'\ x03 \ xb2 \ x8b \ x7f';
- 使用带有校验和的Base58算法进行编码.
检出pytezos.crypto 源以获取实施示例.
Public keys in Tezos are stored in compressed form:
<1 byte prefix>|X
- Prefix is b'\x02' if Y is even, b'\x03' otherwise, now you have a compressed key of 33 bytes long;
- Add tezos prefix b'\x03\xfe\xe2V' for secp256k1, b'\x03\xb2\x8b\x7f' for p256;
- Encode with Base58 algo with checksum.
Checkout pytezos.crypto sources for implementation examples.
-
这里的" Y"是什么?(一个错字,应该是X吗?)What is `Y` here? (A typo, should be X?)
- 0
- 2020-01-17
- arvidj
-
X,Y来自椭圆曲线方程,对于secp256k1,它是y ^ 2=x ^ 3 + 7X, Y are from the elliptic curve equation, for secp256k1 it's `y^2 = x^3 + 7`
- 0
- 2020-01-17
- Michael Zaikin
如何从曲线上的x,y点(
SECP256K1
或P-256
)得出Tezos公钥?例如,对于以太坊,您可以使用
Keccak-256
上的[x,y]
进行计算. 然后,通过获取最后40个字节(20个十六进制字符)并以0x作为前缀,总共42个字节来获取地址.