【问题标题】:How to encrypt the password using seed method?如何使用种子方法加密密码?
【发布时间】:2023-03-10 04:15:01
【问题描述】:

我想用 SimpleCrypto 加密存储在 Seed 方法中的密码。

这是初始化类。

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


        User user1 = new User  { Email = "admin@gmail.com", 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 = "user1@ymail.com", 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();
        }

我真的不知道如何将它们绑定在一起。

有什么建议吗?

【问题讨论】:

  • 为什么不使用内置的 UserManager 来做到这一点?
  • 您想用对称方案加密密码,还是对密码进行哈希处理(由您的 sn-p 暗示,一般推荐)?
  • @CoOl 你有这方面的例子吗?使用用户管理器。
  • @RonBrogan。两个都。在我的注册页面上,我使用 SimpleCrypto 作为加密。我也想在 Seed 方法中使用它。

标签: asp.net asp.net-mvc entity-framework encryption seeding


【解决方案1】:

你可以这样做:

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);

【讨论】:

    猜你喜欢
    • 2011-12-08
    • 2015-09-10
    • 1970-01-01
    • 2015-08-29
    • 2015-03-13
    • 2012-10-09
    • 2013-09-10
    • 1970-01-01
    • 2020-04-30
    相关资源
    最近更新 更多