2010-05-19 23 views
14

jestem generowania soli i wartości hash z moich haseł za pomocą,[Sql-Server] jakiego typu danych użyć dla wartości salt hash i wartości hash i jakiej długości?

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; 
} 

Jaki typ danych proponujesz do przechowywania tych wartości w serwerze SQL? Wszelkie sugestie ...

Sól: 9GsPWpFD

Hash: E778AF0DC5F2953A00B35B35D80F6262CDBB8567

+0

+ dobre pytanie. –

Odpowiedz

7

ASPNET_DB mówi to - nie może się nie udać.

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

natomiast 128 może wydawać się dużo, różne rodzaje szyfrowania może skutkować większymi niż ciągi Zaczęło się. Nie ma absolutnie żadnego powodu, aby nie podążać za przykładem bardzo inteligentnych ludzi, którzy spędzili tysiące godzin na tworzeniu systemu członkostwa asp.net.

+10

-1/przepraszam, ale "microsoft jest sprytny, ja głupi, ja podążam za masą" to złe nastawienie. Especialyl, biorąc pod uwagę olbrzymią ilość głupoty, która czasami pochodzi od Microsoftu. Przywołaj argumenty. – TomTom

+5

@tomtom - wow. Wydaje mi się, że masz duże doświadczenie w implementowaniu stosów bezpieczeństwa i przeszło przez każdą linię kodu źródłowego oraz kolumnę i procedurę przechowywaną, która składa się z bardzo solidnego i elastycznego stosu dostawców asp.net, aby utworzyć kopię podsumowującą moje oświadczenie. hmmm ... Znam kogoś, kto pasuje do tego opisu ..... –

+3

Cóż, zrobiłem. Ale próbuję też używać mojego mózgu i nie ślepo podążać za rzeczami, które inni ludzie mogli zrobić - z zupełnie innych powodów, których nawet nie dbasz. Przy okazji poważnie wątpię, że nawet stwardnienie rozsiane spędzi tysiące (!) Godzin pracy właśnie rozwija system członkostwa asp.net, kiedy inni ludzie przyjmują 100 lub więcej w sumie. A wiesz, że system członkostwa został "przywiązany" w późniejszej wersji .net po tym, jak inteligentni ludzie całkowicie zapomnieli, że można go rozszerzyć w jakikolwiek sposób? MS nie jest doskonały. – TomTom

1

Przechowujemy nasze hasła jako binarne hash SHA512

+2

Bez użycia soli jest to stupi i poważne zaniedbanie, ponieważ oznacza to, że prosty atak słownikowy może włamać się do haseł - i zrobić to szybciej, im więcej haseł ma twoja lista. – TomTom

+6

Możesz zrobić to samo z solą –

+0

@JoePhilllips Sądzę, że atakuje tęczowy stół, którego unika się przy użyciu soli. – ghord

Powiązane problemy