ed25519 キーに一致する BEP の公開鍵の生成
問題:
Go crypto/ed25519 パッケージの使用、生成された公開キーは、BEP データを使用したテスト ケースで提供される予期されたものと異なります。
原因:
ed25519 には異なる秘密キー形式が存在します。 BEP データは 64 バイトのハッシュされた秘密キーを使用しますが、Go パッケージは 32 バイトのハッシュされた秘密キー (32 バイトのシードが接頭辞として付けられます) を使用します。
解決策:
BEP 秘密キーを Go 形式に変換することはできませんが、BEP で使用されるハッシュされた秘密キーを処理するために Go ライブラリの修正バージョンを作成できます。
コードの変更:
変更されたコードには次の関数が含まれています。
<code class="go">func getPublicKey(privateKey []byte) []byte { // ... (extraction of 32-byte hash from 64-byte hashed private key and publicKey generation) ... } func sign(privateKey, publicKey, message []byte) []byte { // ... (extraction of 32-byte hash from 64-byte hashed private key and signature computation) ... }</code>
使用法:
この変更されたコードを使用すると、テスト ケースを実行できます。 、生成された公開キーと署名が予想される BEP データと一致することを示しています:
<code class="go">// Using the modified code... fmt.Printf("Calculated key: %x\n", publicKey) fmt.Printf("Expected key: %s\n", expectedPublicKey) keyMatches := expectedPublicKey == hex.EncodeToString(publicKey) fmt.Printf("Public key matches expected: %v\n", keyMatches) // Similarly, check for signature match</code>
以上が私の Go ed25519 公開キーが予想される BEP データと異なるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。