2015-08-21 2 views
1

Я хочу зашифровать пароль, хранящийся в методе Seed, с помощью SimpleCrypto.Как зашифровать пароль с помощью метода семян?

Это класс init.

protected override void Seed(MainContext context) 
    { 
     Role role1 = new Role { RoleName = "Admin" }; 
     Role role2 = new Role { RoleName = "User" }; 


     User user1 = new User { Email = "[email protected]", UserId = 1, Firstname = "Admin", ImageSrc = "batman.gif", Surname = "test", Password = "123456", PasswordSalt="", IsActive = true, CreateDate = DateTime.UtcNow, Roles = new List<Role>() }; 
     User user2 = new User { Email = "[email protected]", UserId = 2, Firstname = "User", ImageSrc = "batman.gif", Surname = "test", Password = "eee", PasswordSalt="", IsActive = true, CreateDate = DateTime.UtcNow, Roles = new List<Role>() }; 




     user1.Roles.Add(role1); 
     user2.Roles.Add(role2); 

     context.Users.Add(user1); 
     context.Users.Add(user2); 

     context.SaveChanges(); 
     } 

Я действительно не знаю, как связать это вместе.

Любое предложение?

+2

почему бы не использовать встроенный UserManager, чтобы сделать это? – CoOl

+0

Вы хотите зашифровать пароль с помощью симметричной схемы или хеш-пароля (подразумеваемый вашим фрагментом и, как правило, рекомендуется)? –

+0

@CoOl У вас есть пример этого? Использование UserManager. –

ответ

0

Вы можете сделать что-то вроде этого:

public class CustomPasswordHasher : IPasswordHasher 
{ 

    public string HashPassword(string password, string salt) 
    { 
     //Using SHA1 (Any other method can be used here) 
     SHA1 sha1 = System.Security.Cryptography.SHA1.Create(); 
     byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(salt + password + salt); 
     byte[] hash = sha1.ComputeHash(inputBytes); 
     return Convert.ToBase64String(hash); 
    } 

    public PasswordVerificationResult VerifyHashedPassword(string hashedPassword, string providedPassword) 
    { 
     providedPassword = HashPassword(providedPassword); 
     return (providedPassword == hashedPassword ? PasswordVerificationResult.Success : PasswordVerificationResult.Failed); 
    } 
} 

и вызвать его в конструкторе вроде этого:

var ph = new CustomPasswordHasher(); 
this.PasswordHash = ph.HashPassword(this.Password, this.PasswordSalt); 
Смежные вопросы