ou est l'algorithme personnalisé mis en œuvre par Microsoft? J'ai testé que SHA1 calculé en utilisant OpenSSL sur mac est équivalent au hachage calculé en C# en utilisant system.security.cryptography.sha1.Est-ce que system.security.cryptography.sha1 utilise l'implémentation de la bibliothèque OpenSSL de l'algorithme SHA1?
Répondre
System.Security.Cryptography.SHA1 est une classe abstraite. Il dispose de trois implémentations:
- SHA1Managed: une implémentation en C# pur
- SHA1CryptoServiceProvider: une implémentation fournie par Windows
- SHA1Cng: une autre ("prochaine génération") mise en œuvre fournis par Windows
Donc, non, aucune implémentation fournie avec .NET Framework n'utilise OpenSSL en interne.
Mono est livré avec différentes implémentations pour ces classes. Ils utilisent tous the same implementation qui est écrit en C# pur.
La raison pour laquelle vous obtenez le même résultat est que l'algorithme SHA1 est déterministe, c'est-à-dire qu'il produit toujours exactement le même résultat pour la même entrée.
Microsoft a presque certainement sa propre implémentation.
SHA-1 est une fonction de hachage (déterministe), vous devriez donc obtenir les mêmes résultats avec deux implémentations distinctes si vous l'appliquez aux mêmes données d'entrée. Si vous ne le faites pas, cela ne signifie pas seulement que les deux implémentations sont distinctes, cela signifie également que l'une d'elles est buggée.
oui, la mise en œuvre buggy était ma préoccupation. Merci! – burkestar
wow, merci. ma préoccupation portait sur les erreurs de mise en œuvre. – burkestar