Maison > développement back-end > Golang > le corps du texte

Pourquoi ma clé publique Go ed25519 diffère-t-elle des données BEP attendues ?

Patricia Arquette
Libérer: 2024-10-31 07:23:29
original
964 Les gens l'ont consulté

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

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 :

  1. getPublicKey : Génère la clé publique à partir d'un 64- clé privée hachée d'octets.
  2. signe : calcule la signature à l'aide de la clé privée hachée, de la clé publique et message.
<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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!