Rumah >pembangunan bahagian belakang >Golang >Mengapa Kunci Awam My Go ed25519 Berbeza Daripada Data BEP yang Dijangka?

Mengapa Kunci Awam My Go ed25519 Berbeza Daripada Data BEP yang Dijangka?

Patricia Arquette
Patricia Arquetteasal
2024-10-31 07:23:291079semak imbas

Why Does My Go ed25519 Public Key Differ From the Expected BEP Data?

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:

  1. getPublicKey: Menjana kunci awam daripada kunci persendirian cincang 64 bait.
  2. tanda: Mengira tandatangan menggunakan kunci persendirian yang dicincang, kunci awam dan mesej.
<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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn