gpt4 book ai didi

java - 如何使用 MessageDigest , Base64 解码

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:01:45 25 4
gpt4 key购买 nike

我目前正在对密码进行编码。我必须解码密码。这是要编码的代码。我正在尝试获取原始密码进行比较。我研究过 MessageDigest 说它是一种单向方法。不确定如何获取原始消息。我们有一个解码方法,但它没有给我原始密码 - Base64.decode。

 public static synchronized String getMD5_Base64(String input) {
if (!isInited) {
isInited = true;
try {
digest = MessageDigest.getInstance("MD5");
} catch (Exception ex) {
}
}
if (digest == null)
return input;

// now everything is ok, go ahead
try {
digest.update(input.getBytes("UTF-8"));
} catch (java.io.UnsupportedEncodingException ex) {
}
byte[] rawData = digest.digest();
byte[] encoded = Base64.encode(rawData);
String retValue = new String(encoded);
return retValue;
}
}

最佳答案

您无法获取原始密码。请记住,摘要和 Base64 编码做两件完全不同的事情。 MD5 摘要创建提供给它的数据的加密散列。这是不可逆转的。 Base64 是一种编码机制,可将数据(可能包含不可打印的二进制数据)转换为保证仅包含可打印字符的字符串。此步骤是可逆的。

检查密码的标准方法是不解码原始密码并比较明文。您需要做的是采用您对原始密码所做的编码(MD5 哈希然后 Base64 编码)并将其应用于新提供的密码。然后将存储的编码版本与新编码版本进行比较。如果它们相同,则密码匹配。

这种设计是一种比存储可以解码的密码更安全的机制。这样,如果有人窃取了您的密码数据库,他们不会自动访问您用户的所有密码。为了闯入系统,他们仍然必须找到编码为相同值的密码。像 MD5 这样的加密散列的目的是让这变得非常困难。另一方面,MD5 不再被认为是非常安全的散列。你最好使用 SHA1 或 SHA256(但请记住,你不能将现有存储的密码从他们的 MD5 哈希更改为另一个没有原始密码的哈希,你没有原始密码,即你不能只转换你的存储密码的数据库)。

关于java - 如何使用 MessageDigest , Base64 解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3479067/

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