Génération du BEP de correspondance de clé publique pour la clé ed25519
Problème :
Utilisation du package Go crypto/ed25519 , la clé publique générée diffère de celle attendue fournie dans un scénario de test utilisant le BEP data.
Cause :
Différents formats de clé privée existent pour ed25519. Les données BEP utilisent une clé privée hachée de 64 octets, tandis que le package Go utilise une clé privée hachée de 32 octets (préfixée par la graine de 32 octets).
Solution :
Bien qu'il ne soit pas possible de convertir les clés privées BEP au format Go, une version modifiée de la bibliothèque Go peut être créée pour gérer les clés privées hachées utilisées dans le BEP.
Modification du code :
Le code modifié comprend les fonctions suivantes :
<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>
Utilisation :
Avec ce code modifié, le scénario de test peut être exécuté, démontrant que la clé publique et la signature générées correspondent au Données BEP attendues :
<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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!