ホームページ  >  記事  >  バックエンド開発  >  golang.org/x/crypto/ed25519 が BitTorrent BEP-0044 テスト データの予期しない公開キーを返すのはなぜですか?

golang.org/x/crypto/ed25519 が BitTorrent BEP-0044 テスト データの予期しない公開キーを返すのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-31 17:56:38317ブラウズ

Why Does golang.org/x/crypto/ed25519 Return Unexpected Public Keys for BitTorrent BEP-0044 Test Data?

ed25519.公開結果の不一致

問題の説明

Golang パッケージ golang.org/x/crypto/ed25519 を使用して、特定の秘密キーに対応する公開キーは、予想とは異なる結果をもたらします。具体的には、ライブラリは秘密検証キー (PVK) の最後の 32 バイトを返しますが、提供されたテスト データはこれが正しくないことを示唆しています。

説明

矛盾は、使用されている形式が異なるために発生します。 ed25519 秘密鍵。 Golang の実装は、RFC 8032 規則に従い、秘密鍵を 32 バイトのシードと 32 バイトの公開鍵の連結として定義します。

ただし、BitTorrent BEP-0044 テストで提供される秘密鍵はデータはシードの SHA512 ハッシュの 64 バイトの結果であり、ハッシュ関数の一方向の性質のため、これらの形式は直接変換できません。

解決策

指定されたテスト データを含む Golang ライブラリを使用するには、ハッシュ化された秘密キー形式から公開キーと署名をカスタム生成できるようにするライブラリの修正バージョンが必要です。これは、関連するコードをライブラリからコピーし、異なる形式に対応するように実装を変更することで実現できます。

変更されたコードには次のものが含まれます。

  • getPublicKey: ハッシュされたキーから公開キーを生成します。秘密鍵 (シード)。
  • sign: ハッシュ化された秘密鍵、公開鍵、およびメッセージに基づいて署名を計算します。

これらの変更された関数を使用すると、予期されるテスト ベクトル。公開キーと署名が含まれます。

以上がgolang.org/x/crypto/ed25519 が BitTorrent BEP-0044 テスト データの予期しない公開キーを返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。