You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go使用Bine解析mkp224o生成的ed25519密钥无法得到对应v3 onion地址

问题原因及修复方案

你的代码存在两处核心错误,导致Tor读取到无效密钥后自动生成了随机新密钥,所以输出的onion地址和mkp224o生成的不一致:

  • 错误使用bytes.TrimLeft处理密钥前缀:bytes.TrimLeft会从头部删除所有匹配第二个参数中任一字符的内容,并不是删除固定前缀,应该用bytes.TrimPrefix来匹配mkp224o生成密钥的固定32字节头部。
  • 未按标准生成ed25519私钥:mkp224o的密钥文件去掉头部后剩余的32字节是ed25519的种子,而Go标准库的ed25519.PrivateKey是64字节结构(前32字节为种子,后32字节为对应公钥),直接将32字节种子赋值给ed25519.PrivateKey类型会导致密钥无效。

修正后的代码片段

将原代码中读取密钥的部分替换为以下内容即可:

const hsKeyHeader = "== ed25519v1-secret: type0 ==\x00\x00\x00"

buf, err := os.ReadFile("/home/user/mkp224o/onions/rocin4w356yd7jadjppabxivaz56z4k2wfvy5xpxieirenda3yt2aiqd.onion/hs_ed25519_secret_key")
check(err)

// 移除固定头部得到32字节种子
seed := bytes.TrimPrefix(buf, []byte(hsKeyHeader))
if len(seed) != ed25519.SeedSize {
    check(errors.New("invalid ed25519 secret key file"))
}

// 从种子生成标准64字节ed25519私钥
known := ed25519.NewKeyFromSeed(seed)

另外你原代码中判断os.Args长度的逻辑没有实际作用(后续未使用传入的参数),可以自行删除或者补充对应逻辑。

内容的提问来源于stack exchange,提问作者Paris Valios

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 18:15:03