我使用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]);
}
}
我可以成功存储它,但现在我如何验证用户? 提前致谢...!!! :)
答案 0 :(得分:1)
要对用户进行身份验证,您必须将salt与用户记录一起存储。你不需要加密盐。
当有人尝试登录时,您将检索用户的salt和哈希值。您使用salt来散列尝试的密码,并将此新哈希值与您为用户保存的哈希值进行比较。如果使用与原始相同的方式将相同的盐与相同的输入组合,并使用相同的散列算法,则最终会得到相同的散列,因此您可以通过比较散列来验证用户。
但是,我强烈建议你不要自己编写这段代码。编写似乎以正常工作的身份验证代码非常容易 - 让我们尝试好,并且似乎保持不好的尝试 - 但是在某些方面存在微妙的缺陷,以至于您在一年后回来并找到六个月前你被黑了。相反,尽可能多地依赖为您的平台提供的解决方案。如果没有可用的,请找到预先存在的库。安全和身份验证代码是您希望留给专家的一件事。
答案 1 :(得分:0)
之后,当用户发送他们的传递时,您可以使用相同的函数GenerateSHA256Hash()来检查用户传递+ salt是否返回与之前保存的相同的哈希值。