我有java三个字符串。比方说吧。
$matchThese = ['link.hos_id' => $hos_id, 'outcome.otc_otrdischargedate' => $td];
$icu = DB::table('link')
->join('demographic', 'link.lnk_dmgid', '=', 'demographic.dmg_id')
->join('admission', 'link.lnk_admid', '=', 'admission.adm_id')
->join('outcome', 'link.lnk_otcid', '=', 'outcome.otc_id')
->where($matchThese)
->where('outcome.otc_outcome', 'like', '%ICU%')
->where('outcome.otc_outcome', 'like', '%I.C.U%')
->where('outcome.otc_outcome', 'like', '%L3%')
->where('outcome.otc_outcome', 'like', '%Level3%')
->where('outcome.otc_outcome', 'like', '%Level 3%')
->where('outcome.otc_outcome', 'like', '%Intensive Care Unit%')
->get();
$icuSize = sizeof($icu);
我想结合这3个字符串并将其更改为md5格式。我该怎么办?我使用MessageDigest类作为一个字符串,但我不知道如何在更改为md5之前附加3个字符串。我想把md5改回字符串。我需要外部库吗?
答案 0 :(得分:3)
反转MD5并不可行 -
您会看到许多提供反向MD5的网站(如 - Option-1,option-2)。 这些网站存储已使用的“字符串和MD5 ”的映射(因此,如果您使用复杂的字符串,他们将无法推断原始字符串)。
回到第1部分
MessageDigest可用于计算Java中给定String的MD5。 它的用法相当简单 -
String testString="someText";
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] messageDigest = md.digest(testString.getBytes());
BigInteger number = new BigInteger(1, messageDigest);
String hashtext = number.toString(16);
所以在你的问题中,这取决于你想要如何创建哈希 -
方式1 - 正如您所说,我们可以 -
StringBuilder simpleString=new StringBuilder(test);
simpleString.append(test1);
simpleString.append(test2);
String testString=simpleString.toString();
最后使用输入调用上面定义的方法 - testString 。
方式2 - 我建议您使用MD5的MD5来确保校验和。
Output = MD5(MD5(test)+MD5(test1)+MD5(test2))
您可以尝试对3个字符的字符串创建暴力攻击。假设只允许使用英文字母(A-Z,a-z)和数字(0-9),在这种情况下只有“仅”623(238,328)种组合。
希望它有所帮助。 :)
答案 1 :(得分:2)
MD5 不是格式或加密算法。
MD5是哈希函数。这意味着,长文本要简短消化 - 对于任何非常短的输入,这种转换显然都是有损的。一般来说,没有从MD5回到纯文本。