2010-05-19 3 views
14

Je suis le sel et génèrent des valeurs de hachage de mes mots de passe en utilisant,[Sql-Server] quel type de données utiliser pour les valeurs de mot de passe et de hachage et quelle longueur?

string salt = CreateSalt(TxtPassword.Text.Length); 
string hash = CreatePasswordHash(TxtPassword.Text, salt); 

private static string CreateSalt(int size) 
{ 
    //Generate a cryptographic random number. 
    RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider(); 
    byte[] buff = new byte[size]; 
    rng.GetBytes(buff); 

    // Return a Base64 string representation of the random number. 
    return Convert.ToBase64String(buff); 
} 

private static string CreatePasswordHash(string pwd, string salt) 
{ 
    string saltAndPwd = String.Concat(pwd, salt); 
    string hashedPwd = 
    FormsAuthentication.HashPasswordForStoringInConfigFile(
    saltAndPwd, "sha1"); 

    return hashedPwd; 
} 

Quel type de données que vous proposeriez pour stocker ces valeurs dans le serveur SQL? Toute suggestion ...

Sel: 9GsPWpFD

Hash: E778AF0DC5F2953A00B35B35D80F6262CDBB8567

+0

+ bonne question. –

Répondre

7

ASPNET_DB dit ceci - ne peut pas se tromper.

Password nvarchar(128) NOT NULL, 
PasswordSalt nvarchar(128) NOT NULL, 

tandis que 128 peut sembler beaucoup, différents types de cryptage peut entraîner des chaînes plus grandes que vous avez commencé avec. Il n'y a absolument aucune raison de ne pas suivre l'exemple des gens très intelligents qui ont passé des milliers d'heures à développer le système d'adhésion asp.net.

+10

-1/désolé, mais "microsoft est intelligent, moi stupide, moi suivre massa" est une mauvaise attitude. Especialyl donné les énormes quantités de stupidité qui sort de Microsoft à la fois. Apportez des arguments. – TomTom

+5

@tomtom - wow. Je suppose que vous avez beaucoup d'expérience dans l'implémentation de piles de sécurité et que vous avez suivi toutes les lignes de code source et colonne et procédure stockée qui composent la pile de fournisseurs asp.net très robuste et flexible pour sauvegarder votre jugement sommaire de ma déclaration. hmmm ... Je connais quelqu'un qui correspond à cette description ..... –

+3

Eh bien, je l'ai fait. Mais j'essaie aussi d'utiliser mon cerveau et de ne pas suivre aveuglément les choses que d'autres personnes ont pu faire - pour des raisons totalement différentes que vous n'avez même pas envie de donner. Btw., Je doute sérieusement que même MS passerait des milliers (!) D'heures de travail juste à développer dans le système d'adhésion asp.net, alors que d'autres personnes prennent 100 ou plus en tout. Et vous savez que le système d'adhésion a été "cloué sur" dans une version ultérieure de .net après que les gens intelligents aient totalement oublié de le rendre extensible par tous les moyens? MS n'est pas parfaite. – TomTom

1

Nous stockons nos mots de passe comme un binaire SHA512 hachage

+2

Sans utiliser de sel, c'est stupide et une grossière négligence car cela signifie qu'une simple attaque de dictionnaire peut pirater des mots de passe - et ce d'autant plus vite que votre liste contient plus de mots de passe. – TomTom

+6

Vous pouvez faire la même chose avec un sel –

+0

@JoePhilllips Je pense qu'il attaque les attaques de table arc-en-ciel, qui sont évitées lors de l'utilisation de sel. – ghord

Questions connexes