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

Pourquoi golang.org/x/crypto/ed25519 renvoie-t-il des clés publiques inattendues pour les données de test BitTorrent BEP-0044 ?

Patricia Arquette
Libérer: 2024-10-31 17:56:38
original
234 Les gens l'ont consulté

Why Does golang.org/x/crypto/ed25519 Return Unexpected Public Keys for BitTorrent BEP-0044 Test Data?

ed25519. Divergence des résultats publics

Description du problème

À l'aide du package Golang golang.org/x/crypto/ed25519, une tentative de récupération du la clé publique correspondant à une clé privée donnée donne un résultat différent de celui attendu. Plus précisément, la bibliothèque renvoie les 32 derniers octets de la clé de vérification privée (PVK), alors que les données de test fournies suggèrent que cela est incorrect.

Explication

L'écart provient des différents formats utilisés pour Clés privées ed25519. L'implémentation de Golang suit la convention RFC 8032, qui définit une clé privée comme une concaténation d'une graine de 32 octets avec la clé publique de 32 octets.

Cependant, les clés privées fournies dans le test BitTorrent BEP-0044 les données sont le résultat de 64 octets d'un hachage SHA512 de la graine, et ces formats ne peuvent pas être directement convertis en raison de la nature unidirectionnelle de la fonction de hachage.

Solution

Pour utiliser le Bibliothèque Golang avec les données de test fournies, une version modifiée de la bibliothèque est requise pour permettre la génération personnalisée de la clé publique et de la signature à partir du format de clé privée hachée. Ceci peut être réalisé en copiant le code pertinent de la bibliothèque et en modifiant l'implémentation pour s'adapter aux différents formats.

Le code modifié comprend :

  • getPublicKey : génère la clé publique à partir du hachage clé privée (seed).
  • sign : calcule la signature en fonction de la clé privée hachée, de la clé publique et du message.

En utilisant ces fonctions modifiées, il est possible de répliquer le vecteurs de test attendus, qui incluent la clé publique et la signature.

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!