我正在使用MessageDigest类研究Java中的md5哈希,可以说我做到了
public void givenPassword_whenHashingUsingCommons_thenVerifying() {
String hash = "35454B055CC325EA1AF2126E27707052";
String password = "ILoveJava";
String md5Hex = DigestUtils
.md5Hex(password).toUpperCase();
assertThat(md5Hex.equals(hash)).isTrue();
}
所以我确实将我的密码字符串转换为md5哈希,可以说我的接收者现在不希望该字符串作为哈希,而是作为普通字符串(哈希仅用于传输),我如何将md5哈希字符串转换回一个“普通”文本字符串?
无法将哈希(MD5或SHA1或SHA2 ....)转换为原始字符串。
hashing function的目的是单向翻译。没有回来。
MD5哈希函数是一种过时的加密函数,它会生成输入数据的固定长度的哈希值。方式和原因超出了此答案的范围。我敦促您在线上访问详细文本。
[还请记住,如果出于加密和敏感的原因使用MD5,请了解SHA256等更安全的建议哈希。
有关更多详细信息,请参阅this introductory text。
您不能将MD5哈希值解密为单向进程。但是,如果MD5算法为每个可能的输入生成了不同的哈希值(不是),则有可能发现原始字符串。