Générer une forte HMACSHA256 clé en C#
Je suis à la recherche pour mettre en œuvre HMACSHA256 demande de signature dans une API, je suis en train de construire. De ce que j'ai compris de https://tools.ietf.org/html/rfc4868, il est préférable que la clé secrète être le même nombre de bits que l'algorithme de hachage (c'est à dire SHA256 secret des clés de 256 bits/32 octets).
Puis-je utiliser l'un des nombreux différents générateurs de nombres aléatoires pour C# ou est-il une manière spécifique que ces touches doivent être générés.
Enfin, Amazon Web Services utilise HMACSHA256, mais ils ont les clés secrètes qu'ils fournissent (au moins pour moi) est de 320 bits/40 octets (lorsque la clé est converti octets en UTF-8, voir https://github.com/aws/aws-sdk-net/blob/master/AWSSDK/Amazon.Runtime/Internal/Auth/AWS4Signer.cs#L205-L232). Est-il une raison pour utiliser plus que nécessaire par l'algorithme de hachage puisque c'est tronquée?
Vous devez vous connecter pour publier un commentaire.
Si une clé est plus long que le HMAC prend en charge, il va généralement être haché à la bonne taille. Il s'agit principalement de support lisible par l'homme, des touches de longueur arbitraire. Si vous êtes à la génération d'une clé programmant et n'a pas besoin d'être lisible par l'humain, je vous recommande d'utiliser
RandomNumberGenerator
. C'est essentiellement ce qu'il a été fait pour.Une manière de générer un (probablement sécurisé) clé est: