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

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

Patricia Arquette
リリース: 2024-10-31 17:56:38
オリジナル
345 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート