Maison >développement back-end >Golang >Pourquoi golang.org/x/crypto/ed25519 renvoie-t-il des clés publiques inattendues pour les données de test BitTorrent BEP-0044 ?
À 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.
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.
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 :
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!