Golang パッケージ golang.org/x/crypto/ed25519 を使用して、特定の秘密キーに対応する公開キーは、予想とは異なる結果をもたらします。具体的には、ライブラリは秘密検証キー (PVK) の最後の 32 バイトを返しますが、提供されたテスト データはこれが正しくないことを示唆しています。
矛盾は、使用されている形式が異なるために発生します。 ed25519 秘密鍵。 Golang の実装は、RFC 8032 規則に従い、秘密鍵を 32 バイトのシードと 32 バイトの公開鍵の連結として定義します。
ただし、BitTorrent BEP-0044 テストで提供される秘密鍵はデータはシードの SHA512 ハッシュの 64 バイトの結果であり、ハッシュ関数の一方向の性質のため、これらの形式は直接変換できません。
指定されたテスト データを含む Golang ライブラリを使用するには、ハッシュ化された秘密キー形式から公開キーと署名をカスタム生成できるようにするライブラリの修正バージョンが必要です。これは、関連するコードをライブラリからコピーし、異なる形式に対応するように実装を変更することで実現できます。
変更されたコードには次のものが含まれます。
これらの変更された関数を使用すると、予期されるテスト ベクトル。公開キーと署名が含まれます。
以上がgolang.org/x/crypto/ed25519 が BitTorrent BEP-0044 テスト データの予期しない公開キーを返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。