gpt4 book ai didi

java - 如何在java中使用哈希函数对密码进行哈希处理?

转载 作者:行者123 更新时间:2023-11-29 06:24:20 25 4
gpt4 key购买 nike

我正在尝试散列密码并将其保存在数据库中;我知道散列是一种单向过程。如何检查用户提供的密码和数据库中存储的密码是否相同?我正在使用 MD5,每次执行散列时,我都会为相同的输入获得不同的值。谁能帮忙?

String pass = "wor1ldcup";
String pass1 = "wor1ldcup";

DigestUtils du = new DigestUtils();
byte[] b = du.md5(pass);
byte[] b1 = du.md5(pass1);

最佳答案

您提供的代码基本上是正确的,但有几点需要注意:

  1. DigestUtils 的方法都是static,因此应该按以下方式调用:

    byte[] b = DigestUtils.md5(...);

    不像

    DigestUtils du = new DigestUtils();  // wrong ... no need to instantiate
    byte[] b = du.md5(...); // wrong ... never use an instance to
    // call a static method.
  2. 您没有说明如何比较 bb1,但是 b == b1 将不起作用, b.equals(b2) 也不会……两者都比较引用。您需要调用 Arrays.equals(b, b1)

  3. 尝试将 MD5 哈希值转换为字符串是一个坏主意。根据默认的字符集,转换可能会产生损失;即不可逆。如果要在数据库中存储 MD5 哈希值,最好使用(例如)base64 编码将其编码为字符串,并保存编码后的哈希值。

关于java - 如何在java中使用哈希函数对密码进行哈希处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5307317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com