使用asp.net在Mysql中使用SHA256验证用户

时间:2017-04-23 13:22:23

标签: mysql asp.net authentication encryption sha256

我使用SHA256对密码进行了哈希处理。我已经生成了一个随机盐生成器,每次生成一个随机盐,它被添加到密码,然后加密并存储在数据库中。现在我正在尝试验证用户,我不知道该怎么做。这就是我在做的事情:

import java.util.*;
public class factorialArray
{
    public static void main(String [] args)
    {
        int factorialA[] = new int[6];      //Array-Size=Maximum Number+1; so here 5+1=6.
        for (int i=1; i<6; i++)
        {
            int factorial = 1;
            for(int j=1; j<=i; j++)
            {
                factorial = factorial *j;
            }
            factorialA[i] = factorial; //Here assignment should be done to the element of array.
        }
        System.out.println(factorialA[3]);
    }
}

我可以成功存储它,但现在我如何验证用户? 提前致谢...!!! :)

2 个答案:

答案 0 :(得分:1)

要对用户进行身份验证,您必须将salt与用户记录一起存储。你需要加密盐。

当有人尝试登录时,您将检索用户的salt和哈希值。您使用salt来散列尝试的密码,并将此新哈希值与您为用户保存的哈希值进行比较。如果使用与原始相同的方式将相同的盐与相同的输入组合,并使用相同的散列算法,则最终会得到相同的散列,因此您可以通过比较散列来验证用户。

但是,我强烈建议你不要自己编写这段代码。编写似乎以正常工作的身份验证代码非常容易 - 让我们尝试好,并且似乎保持不好的尝试 - 但是在某些方面存在微妙的缺陷,以至于您在一年后回来并找到六个月前你被黑了。

相反,尽可能多地依赖为您的平台提供的解决方案。如果没有可用的,请找到预先存在的库。安全和身份验证代码是您希望留给专家的一件事。

答案 1 :(得分:0)

  1. 您已将密码加密后未加密。
  2. 您还需要在某些地方保存盐。如果没有,你就无法进行身份验证。
  3. 之后,当用户发送他们的传递时,您可以使用相同的函数GenerateSHA256Hash()来检查用户传递+ salt是否返回与之前保存的相同的哈希值。