gpt4 book ai didi

cryptography - HSM 返回一个 67 字节的 ECDSA-secp256k1 公钥,这是什么意思?

转载 作者:行者123 更新时间:2023-12-01 11:13:58 25 4
gpt4 key购买 nike

我通过 Graphene 库在 HSM 上生成一个 key ,除非我尝试通过获取其 'pointEC' 属性(相当于 CKA_EC_POINT )来获取公钥原始值,否则我会得到一个 134 个字符串:

044104c9d5b656518b5b7e0d747b86328c37a0d507de9b3863a43e77b559ab60c0f9b15985f83a8c20588164c0634f98eb4a4cf8ce70020e94ae21a247904fac8b1010

现在,我知道这个标准有一个 X 和 Y 整数,但我读到需要一些数学才能使它们有效地生成以太坊地址。我也明白 '04' 意味着它是一个 未压缩 公钥,但我不知道为什么 '4104' 不断弹出或它意味着什么。这些只是表示相同数据的不同方式吗?我可以只取最后 128 个字符并将其散列为有效的以太坊地址吗?

最佳答案

您看到的是一个BER/DER 编码的未压缩点。值为 04 的第一个字节不是未压缩点指示符。那是第 3 个字节。值为 04 的第一个字节编码 ASN.1 OCTET STRING 的标记字节(对于大多数开发人员而言也称为字节数组)。可以查看结构here .

十六进制值为 41 的字节是后面字节的大小:04 未压缩点指示符为 1 个字节,静态为 32 个字节大小 X 坐标和 32 字节的 Y 坐标。

所以是的,如果您需要 X 和 Y 坐标,您可以将最后 64 个字节分成两部分。 128 个字符只是这些字节的十六进制表示形式 - 但您应该只关心字节数。

当然,您应该做的是解析 ASN.1,确定并验证长度,获取未压缩点,对其进行解码并检查它是否在曲线上 验证您的输入。如果 EC key 包含正确的参数,则它是有效的。然而,对于以太坊/比特币,曲线是隐式已知的 (secp256k1)。

关于cryptography - HSM 返回一个 67 字节的 ECDSA-secp256k1 公钥,这是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55747517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com