#c# #model-view-controller #passwords
#c# #model-view-controller #пароли
Вопрос:
Кто-нибудь может мне помочь, я пытаюсь создать AspNetUser (таблица генерируется из mvc login, добавлены некоторые атрибуты к этому базовому объекту), я хочу хэшировать пароль точно так же, как функция User.Create(user, passwordToHash)
var user = new AspNetUser();
user.UserName = "admin@mail.com";
user.Email = "admin@mail.com";
user.Nickname = "SuperAdmin"; // added by me
user.EmailConfirmed = true;
string userPWD = "PassToHash123";
user.PasswordHash = // Need Help
db.AspNetUsers.Add(user);
db.SaveChanges();
// function to create standard user which not work with my modified AspNetUser
var chkUser = UserManager.Create(user, userPWD);
Но я не знаю, существует ли функция?
Можете ли вы сказать мне, есть ли функция, и если нет, мне нужно изменить систему входа в приложение?
Спасибо
Ответ №1:
У пользователя есть свойство PasswordHasher. Если доступно, используйте это для создания своей реализации hash else и установите свой собственный PasswordHasher.
Ответ №2:
Вы можете использовать алгоритм MD5 для хэширования вашего строкового пароля до хэш-строки длиной 36 символов.
public static string MD5Hash(string input)
{
StringBuilder hash = new StringBuilder();
MD5CryptoServiceProvider md5provider = new MD5CryptoServiceProvider();
byte[] bytes = md5provider.ComputeHash(new UTF8Encoding().GetBytes(input));
for (int i = 0; i < bytes.Length; i )
{
hash.Append(bytes[i].ToString("x2"));
}
return hash.ToString();
}
Комментарии:
1. Спасибо за вашу функцию, но ваша функция не хэшируется, как mvc UserManager?
2. Дайте мне пример хэш-строки из UserManager.
3. Не делайте этого. MD5 взломан.
4. Вы должны использовать: 1. Безопасный алгоритм хэширования. 2. Медленный хэш (т. Е. не только SHA256 и т.д.), Но и схема специально для паролей. 3. Вы должны использовать случайную соль, которая добавляется к паролю и к сохраненному хэшу, чтобы один и тот же пароль не хэшировался до одного и того же значения дважды. 4. Вам не следует пытаться писать этот код самостоятельно — используйте библиотеку.