Générer un hachage SHA1 dans la bibliothèque de classes portable
Je suis en train de construire une bibliothèque de classes portable qui génère OAuth url pour les autres classes et/ou les applications à utiliser. Cette bibliothèque de classe à l'aide d'OAuth doit être une bibliothèque de classes portable donc il peut travailler avec de différentes versions d'une API DropBox je suis en train de construire.
Partie de cette classe doit générer un hash SHA1 pour générer le oauth_signature avec.
Je suis conscient que la bibliothèque de classes portable ne prend pas en charge le Système.De sécurité.La cryptographie, ainsi en est-il de toute façon que cette classe peut générer un hash SHA1 sans que la classe?
source d'informationauteur Tom
Vous devez vous connecter pour publier un commentaire.
Mono fournit un géré la mise en œuvre de SHA1 pour son propre
mscorlib.dll
(mais il n'est pas situé dansMono.Security.dll
comme @CodeInChaos suggéré).Il est open source, très bien testé et conçu pour se comporter exactement comme la mise en œuvre de Microsoft (par exemple, il dérive de
SHA1
HashAlgorith
... met en œuvreICryptoTransform
...), donc ça devrait être facile de la baisse-dans le remplacement.Je pense que le plus simple est d'utiliser le PCLCrypto package nuget. Ensuite, vous pouvez faire:
Bien j'avais besoin de ce trop récemment et je l'ai trouvé beaucoup plus facile de prendre SHA1 de la mise en œuvre de HashLib : http://hashlib.codeplex.com/
Mono mise en œuvre ont beaucoup aller dépendances (localisation des exceptions, etc.), alors que de HashLib il vous suffit de copier quelques fichiers sans aucune modification:
55 KO de code total, donc rien de trop lourd.
J'ai utilisé cette BouncyCastle Nuget package: https://www.nuget.org/packages/BouncyCastle-PCL/ et il fonctionne très bien pour moi (cross plates-formes Application du Windows Store, .Net Framework 4.5, Silverlight 5, Windows Phone 8, Xamarin.Android, Xamarin.iOS)
Utilisation HMACSHA1 pour générer la signature comme ceci:
La SHA-1 de l'article de Wikipédia contient pseudo-code que vous pouvez utiliser comme un guide pour votre propre mise en œuvre. Mais, comme toujours avec les fonctions cryptographiques, je conseille fortement d'utiliser un essayé et testé de mise en œuvre.
En supposant que vous voulez un SHA-256 de la mise en œuvre, vous pouvez en trouver un dans BouncyCastlequi est disponible sous forme de code source. La classe pertinente, il est appelé Org.BouncyCastle.Crypto.Digère.Sha256Digest (voici son source).
Vous voudrez peut-être consulter la nouvelle .NET Standard bibliothèque:
https://docs.microsoft.com/en-us/dotnet/articles/standard/library
Il est portable, et
System.Security.Cryptography
est inclus.Vous pouvez également obtenir de l'aide (pour la création d'un PCL projet .NET de la Bibliothèque Standard) ici:
https://xamarinhelp.com/dot-net-standard-pcl-xamarin-forms/
Je voulais signer le protocole OAuth aussi, et je suis à la recherche à la PCL Crypto - ce test montre la création d'un HmacSha1 de hachage, et compare le résultat à la norme .NET Framework.
Cela a fonctionné pour moi quand j'ai eu pour obtenir le même résultat. Vous pouvez faire cela avec
SHA512
et les autres aussi.Code de la cité à partir de: https://xamarinhelp.com/cryptography-in-xamarin-forms/
Voici un exemple d'utilisation de BouncyCastle