В настоящее время я использую пакет SimpleEncrypto
NuGet для шифрования моих паролей, например:
var crypto = new SimpleCrypto.PBKDF2();
var encrypPass = crypto.Compute(user.Password);
var newUser = db.Users.Create();
newUser.PasswordSalt = crypto.Salt;
Проблема заключается в том, что пароль и соль сгенерированы около 100 символов, и я действительно просто стараюсь держать его намного короче, поэтому он будет вписываться в таблицу в базе данных. Пользователю разрешено вводить максимум 20 символов.
Как ограничить длину шифрования и соли?
Во-первых, вы не шифруете, а хешируете. Вы можете усекать хеши любой длины. Конечно, вы рискуете столкнуться больше, чем больше усекаете хэш.
Просто обрезайте хэш до 20 символов. 20 символов base64 должны иметь достаточную силу для пароля. Это 6*20=120
бит энтропии, который, вероятно, больше, чем пароль почти всех пользователей.