Создание хешированных паролей в C#
Доброго времени суток! В данной статье я покажу Вам как можно просто создать хешированные пароли в С#.
Итак, код:
Метод, который создается случайную строку - соль - для защиты паролей
static byte[] GenerateSalt()
{
const int SaltLength = 64;
byte[] salt = new byte[SaltLength];
var rngRand = new RNGCryptoServiceProvider();
rngRand.GetBytes(salt);
return salt;
}
Следующие два метода используют "соль", созданную выше, для создания хешированного с помощью MD5 пароля:
static byte[] GenerateMD5Hash(string password, byte[] salt)
{
byte[] passwordBytes = Encoding.UTF8.GetBytes(password);
byte[] saltedPassword = new byte[salt.Length + passwordBytes.Length];
using var hash = new MD5CryptoServiceProvider();
return hash.ComputeHash(saltedPassword);
}
Тот же хеш, что и выше, но только созданный с помощью алгоритма SHA256
static byte[] GenerateSha256Hash(string password, byte[] salt)
{
byte[] passwordBytes = Encoding.UTF8.GetBytes(password);
byte[] saltedPassword = new byte[salt.Length + passwordBytes.Length];
using var hash = new SHA256CryptoServiceProvider();
return hash.ComputeHash(saltedPassword);
}
Используется код выше следующим образом:
static void Main(string[] args)
{
Console.Write("Введите пароль?");
string password = Console.ReadLine();
// создаем соль
byte[] salt = GenerateSalt();
// создаем MD5-хеш
byte[] md5Hash = GenerateMD5Hash(password, salt);
string md5HashString = Convert.ToBase64String(md5Hash);
Console.WriteLine($"\nMD5-хеш: {md5HashString}");
// создаем Sha256-хеш
byte[] sha256Hash = GenerateSha256Hash(password, salt);
string sha256HashString = Convert.ToBase64String(sha256Hash);
Console.WriteLine($"\nSHA256: {sha256HashString}");
}
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.