Существуют разные способы создания случайных данных, которые можно использовать для засолки.Наиболее распространенные из них:
- Создание случайного GUID с использованием
Guid
типа - Создание случайной строки цифр с использованием
RNGCryptoServiceProvider
класса
Чтобы создать новый случайный GUID, мы вызываем метод NewGuid
для типа Guid
.После генерации мы просто добавляем соль к строке для шифрования.
string saltAsString = Guid.NewGuid().ToString();
Для создания случайной строки цифр с использованием класса RNGCryptoServiceProvider
мы сначала инициализируем провайдера и массив byte
и затем вызовите метод GetBytes
в нашем экземпляре провайдера.
byte[] saltInBytes = new byte[8];
RNGCryptoServiceProvider saltGenerator = new RNGCryptoServiceProvider();
saltGenerator.GetBytes(saltInBytes);
string saltAsString = Convert.ToBase64String(saltInBytes);
Следующий код представляет собой модифицированную версию предыдущего фрагмента для демонстрации засолки.
public void HashText()
{
string textToHash = "password";
string saltAsString = Guid.NewGuid().ToString();
byte[] byteRepresentation
= UnicodeEncoding.UTF8.GetBytes(textToHash + saltAsString);
byte[] hashedTextInBytes = null;
MD5CryptoServiceProvider myMD5 = new MD5CryptoServiceProvider();
hashedTextInBytes = myMD5.ComputeHash(byteRepresentation);
string hashedText = Convert.ToBase64String(hashedTextInBytes);
// will display X03MO1qnZdYdgyfeuILPmQ==
MessageBox.Show(hashedText);
}