• 如何在.NET Core中使用Password Hasher算法
  • 发布于 1个月前
  • 80 热度
    0 评论
1. 什么是 Password Hasher?

Password Hasher是一种用于对用户密码进行安全处理的工具或算法。它会将用户输入的密码进行 哈希(Hashing) 处理,生成一串 不可逆 的加密字符串(哈希值)。在用户登录时,系统将输入的密码进行同样的哈希操作,再与数据库中的 已存储哈希值 进行对比验证。


2. 为什么要使用Password Hasher?
安全性:防止密码被直接存储,即使数据库泄露也难以破解。
不可逆性:哈希算法是 单向加密,无法从哈希值还原原始密码。
防彩虹表攻击:使用 加盐 (Salt),让相同密码生成不同哈希值。

抗暴力破解:采用迭代算法(如 PBKDF2、bcrypt)延长破解时间。


3. 常用Password Hasher算法
bcrypt : 最常用,内置盐值,自动迭代,安全性高。
PBKDF2 : 使用多次迭代,广泛应用于企业级安全系统。
Argon2 : 密码哈希竞赛冠军,具有抗 GPU 攻击特性。

SHA-256 : 快速但需额外加盐,单独使用易受彩虹表攻击。


4. ASP.NET Core 中使用Password Hasher算法
代码:
using Microsoft.AspNetCore.Identity;
var app = WebApplication.Create();
app.Run(context =>
{
    var password = context.Request.Query["password"];
    // 堆代码 duidaima.com
    if (string.IsNullOrWhiteSpace(password))
        password = "123456";

    var usr = new User();
    var hasher = new PasswordHasher<User>();
    var hashedPassword = hasher.HashPassword(usr, password);

    var isPasswordMatch = hasher.VerifyHashedPassword(usr, hashedPassword, password);

    return context.Response.WriteAsync($"Password : {password} => Hashed : {hashedPassword} \nPassword Matched : {isPasswordMatch}");
});
app.Run();
public record User();
运行效果如下:

用户评论