Я рассмотрел вопрос StackOverflow, "Шифрование паролей/уровень данных AES AES или AES уровня" , и я хотел бы эффективно и эффективно хешировать мои пароли при регистрации (веб-приложение), а затем проверить их правильность при входе в систему. Я использую VB, но удобен с использованием С#.
Я хотел бы использовать класс шифрования Джеффа Этвуда, описанный в ".NET Encryption Simplified" , поскольку это очень легко понять. У него класс хэширования, но я понятия не имею, как "войти" и сравнить хэши после их хэширования. Это демонстрация Джеффа его хеш-методов с использованием его класса Encryption:
Sub DemoHash()
Dim d As New Encryption.Data( _
"{ts '2004-10-09 08:10:04'}The world is beautiful and needs caring by its children")
Dim hash As New Encryption.Hash(Encryption.Hash.Provider.SHA1)
Dim hash2 As New Encryption.Hash(Encryption.Hash.Provider.SHA256)
Dim hash3 As New Encryption.Hash(Encryption.Hash.Provider.SHA384)
Dim hash4 As New Encryption.Hash(Encryption.Hash.Provider.SHA512)
Dim hash5 As New Encryption.Hash(Encryption.Hash.Provider.MD5)
Dim hash6 As New Encryption.Hash(Encryption.Hash.Provider.CRC32)
hash.Calculate(d)
hash2.Calculate(d)
hash3.Calculate(d)
hash4.Calculate(d)
hash5.Calculate(d)
Console.WriteLine("SHA1: " & hash.Value.Hex)
Console.WriteLine("SHA256: " & hash2.Value.Hex)
Console.WriteLine("SHA384: " & hash3.Value.Hex)
Console.WriteLine("SHA512: " & hash4.Value.Hex)
Console.WriteLine("MD5: " & hash5.Value.Hex)
Console.WriteLine("CRC32: " & hash6.Calculate(d).Hex)
Console.WriteLine()
Dim salt As New Encryption.Data("salty!")
Console.WriteLine("Salted CRC32: " & hash6.Calculate(d, salt).Hex)
Console.WriteLine("Press ENTER to continue...")
Console.ReadLine()
End Sub
Итак, мои вопросы:
-
Я могу зашифровать пароль (хотя я не собираюсь его хранить) и хешировать строку. Если бы у меня был пользователь, называемый "barry" с паролем "fishlegs", как лучше всего сохранить его пароль и получить его?
-
В SQL Server; является бинарным или nvarchar лучшим вариантом для хранения хэша?
-
Основываясь на "барри" и его пароле, что эффективно хранит хэш? Является ли это шифрование "рыбьего жира", приложенное к соли?
Криптография сложная!
Спасибо всем, кто может помочь...