Menjana BEP Pemadanan Kunci Awam untuk Kunci ed25519
Masalah:
Menggunakan pakej crypto/ed25519 Go , kunci awam yang dijana berbeza daripada yang dijangkakan yang disediakan dalam kes ujian menggunakan data BEP.
Punca:
Format kunci persendirian yang berbeza wujud untuk ed25519. Data BEP menggunakan kunci peribadi cincang 64 bait, manakala pakej Go menggunakan kunci peribadi cincang 32 bait (diawalan oleh benih 32 bait).
Penyelesaian:
Walaupun tidak mungkin untuk menukar kunci peribadi BEP kepada format Go, versi pustaka Go yang diubah suai boleh dibuat untuk mengendalikan kunci peribadi yang dicincang yang digunakan dalam BEP.
Pengubahsuaian Kod:
Kod yang diubah suai termasuk fungsi berikut:
<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>
Penggunaan:
Dengan kod yang diubah suai ini, kes ujian boleh dijalankan , menunjukkan bahawa kunci awam dan tandatangan yang dijana sepadan dengan data BEP yang dijangkakan:
<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>
Atas ialah kandungan terperinci Mengapa Kunci Awam My Go ed25519 Berbeza Daripada Data BEP yang Dijangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!