2011-09-21 2 views
1

Je suis à la recherche d'un algorithme de hachage FIPS validé pour stocker les mots de passe dans la base de données. Je ne ai pas utilisé le code suivant, mais je reçois toujours l'erreurAlgorithme FIPS validé pour stocker les mots de passe dans une base de données?

Cette mise en œuvre ne fait pas partie de la plate-forme Windows FIPS algorithmes de chiffrement validés.

SHA1CryptoServiceProvider Testsha1 = new SHA1CryptoServiceProvider(); 
byte[] hashedBytes; 
UTF8Encoding encoder = new UTF8Encoding(); 
hashed = Testsha1.ComputeHash(encoder.GetBytes(strPassword)); 
StringBuilder sb = new StringBuilder(); 
for (int i = 0; i < hashed.Length; i++) 
{ 
    sbuilder.Append(hashed[i].ToString("x2")); 
} 
string Password = sb.ToString(); 
+0

Où exactement voyez-vous ce message d'erreur? – n8wrl

+0

@ n8wrl cette exception est levée par certaines classes de sécurité, telles que SHA1Managed, lorsque la stratégie de sécurité EnableFIPS est appliquée. – vcsjones

+0

J'ai vu l'erreur quand j'ai essayé d'exécuter mon application web. – Macnique

Répondre

2

Ajout de la ligne suivante dans web.config en section system.web

<machineKey validationKey="AutoGenerate,IsolateApps" ecryptionKey="AutoGenerate,IsolateApps" validation="3DES" decryption="3DES"/>

a résolu mon problème

2

plaine SHA-1 ne doit pas être utilisé pour stocker les mots de passe. PBKDF2 est un bon choix. En .net, vous pouvez l'utiliser avec la classe Rfc2898DeriveBytes. Voir https://security.stackexchange.com/questions/2131/reference-implementation-of-c-password-hashing-and-verification/2136#2136

Vous devrez peut-être remplacer la fonction de hachage sous-jacente par SHA-256. D'après ce dont je me souviens, SHA-1 n'est pas approuvé par le NIST.

+2

SHA1 est acceptable par NIST (partie de FIPS Pub 180) - ce serait bien si Microsoft donnait le contrôle de l'algorithme HMAC utilisé pour utiliser SHA256. La mise en œuvre de Microsoft dans le CSP est approuvée [140-2] (http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/1401val2004.htm#405). – vcsjones

+0

cela ressemble à l'ajout de ce qui suit dans web.config sous la section system.web résolu mon problème – Macnique

0

Je cherche un FIPS algorithme de hachage pour stocker les mots de passe validés dans la base de données .

Utilisez l'un des hachages de la famille SHA-2. Par exemple, SHA256.

N'utilisez pas de classe gérée - ils ne sont pas validés FIPS. Au lieu de cela, utilisez SHA256CryptoServiceProvider et vos amis.

Questions connexes