Некоторое время назад у нас была отличная дискуссия о передовых методах взлома пароля, там вы можете найти несколько отличных идей:
Соль Ваш пароль: лучшие практики?
Я обнаружил, что одним из самых простых, хотя все еще достаточно безопасных 1008 *, является использование GUID в качестве соли. Это случайно и достаточно долго. Лучше всего, если вы включите форматирование GUID (символы «{» и «-»), но это не обязательно.
Помните, что соль должна быть уникальной для каждого посоленного элемента, и что для большей безопасности вы должны использовать криптографически безопасный генератор случайных чисел. Помните также, что вы должны хранить свою соль вместе с паролем, иначе вы не сможете сравнить версию с открытым текстом с хешированной версией! Вы можете хранить соль в незашифрованном виде, если хотите; Я обычно помещаю это в поле в той же самой таблице как пароль. Цель соли не в том, чтобы оставаться скрытой, а в том, чтобы сделать радужные таблицы трудными (надеюсь, невозможными) для своевременного вычисления.
Вот небольшой фрагмент кода, который будет работать в C #:
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
byte[] buffer = new byte[1024];
rng.GetBytes(buffer);
string salt = BitConverter.ToString(buffer);
var saltedPassword = password + salt;
или ...
var salt = Guid.NewGuid().ToString();
var saltedPassword = password + salt;