小编Nao*_*ens的帖子

验证盐渍哈希

我是C#的新手,这是我在这里的第一个问题,所以我提前为任何失礼道歉.

语境:

当用户注册时,我调用CreateSaltedHash()方法并从文本字段中传递用户输入的密码.在将密码存储在User表的Password列中之前,此方法会对密码进行加密和哈希处理.

题:

当用户尝试登录时,我该如何验证密码?

如果我再次调用CreateSaltedHash()方法,由于随机盐,它将不匹配.

我应该将盐储存在单独的栏中吗?我应该在生成盐渍哈希时使用分隔符吗?根据盐渍和散列密码验证输入密码的最安全方法是什么?

代码: 这是我到目前为止所拥有的.

public class PasswordHash
{
    public const int SALT_BYTES = 32;

    /*
     * Method to create a salted hash
     */
    public static byte[] CreateSaltedHash(string password)
    {
        RNGCryptoServiceProvider randromNumberGenerator = new RNGCryptoServiceProvider();
        byte[] salt = new byte[SALT_BYTES];
        randromNumberGenerator.GetBytes(salt);
        HashAlgorithm hashAlgorithm = new SHA256Managed();
        byte[] passwordByteArray = Encoding.UTF8.GetBytes(password);
        byte[] passwordAndSalt = new byte[passwordByteArray.Length + SALT_BYTES];
        for (int i = 0; i < passwordByteArray.Length; i++)
        {
            passwordAndSalt[i] = passwordByteArray[i];
        }
        for (int i = 0; …
Run Code Online (Sandbox Code Playgroud)

c# hash salt password-hash

9
推荐指数
1
解决办法
4585
查看次数

标签 统计

c# ×1

hash ×1

password-hash ×1

salt ×1