我有一个输入字段,用户输入用户名和密码。我是否需要对他们输入的密码进行哈希处理,或者是否可以将其保留,只需在密码数据密码中使用密码即可。我使用password_hash用PASSWORD_BCRYPT散列它们,如果我必须对输入和存储的密码进行散列,我不知道如何比较它们。
答案 0 :(得分:1)
没有。当您使用class FaderTimer implements FocusListener, ActionListener {
private ArrayList colors;
private JButton component;
private Timer timer;
private int alpha;
private int increment;
FaderTimer(ArrayList colors, JButton component, int interval) {
this.colors = colors;
this.component = component;
component.addFocusListener(this);
timer = new Timer(interval, this);
}
public void focusGained(FocusEvent e) {
alpha = 0;
increment = 1;
timer.start();
}
public void focusLost(FocusEvent e) {
alpha = steps;
increment = -1;
timer.start();
}
public void actionPerformed(ActionEvent e) {
alpha += increment;
component.setBackground((Color) colors.get(alpha));
if (alpha == steps || alpha == 0) {
timer.stop();
}
}
}
}
或类似函数来散列密码时,在使用password_hash
进行测试之前,不应对密码进行散列。至少只要你没有"双重哈希"这是没用的。
password_verify
方法将返回一个值,该值包含它使用的哈希,salt和cost。因此,当它传递给password_hash
方法时,该方法将知道如何处理作为第一个参数传递的明文密码。
您可以在PHP文档中阅读所有这些内容:
http://php.net/manual/en/function.password-verify.php
http://php.net/manual/en/function.password-hash.php
答案 1 :(得分:0)
没有必要,但you can do that如果您希望用户提供超过71个字符的密码。
如果您决定预先哈希,请不要将原始二进制字符串传递给password_hash()
/ password_verify()
。你最终会制造另一个弱点。
随附文章的示例代码在此确切设置中演示了Bcrypt-SHA384。