我有java三個字符串。比方說例子。Java將字符串轉換爲md5,反之亦然
String test = "Hi, ";
String test1 = "this is ";
String test2 = "Java programming!";
我想結合這些3字符串,並將其更改爲md5格式。我怎麼辦?我爲一個字符串使用MessageDigest類,但我不知道如何在更改爲md5之前追加3個字符串。我想要將md5改回字符串。我需要外部圖書館嗎?
我有java三個字符串。比方說例子。Java將字符串轉換爲md5,反之亦然
String test = "Hi, ";
String test1 = "this is ";
String test2 = "Java programming!";
我想結合這些3字符串,並將其更改爲md5格式。我怎麼辦?我爲一個字符串使用MessageDigest類,但我不知道如何在更改爲md5之前追加3個字符串。我想要將md5改回字符串。我需要外部圖書館嗎?
MD5是而不是格式或加密算法。
MD5是散列函數。這意味着,長文本可以簡化摘要 - 除了非常短的輸入之外,這種轉換顯然是有損的。一般來說,沒有從MD5回到純文本。
好的,那我有個問題。我將3個字符串轉換爲散列碼。 md5可以爲不同的字符串生成重複的字符嗎? ,如果我轉換一千個字符串。 –
是的,MD5可以爲兩個不同的輸入產生相同的輸出,但是對於兩個(甚至數千個)不同的隨機輸入發生這種情況的機率非常小。 –
好倒車MD5是不是真的可行的 -
你會看到很多提供反向MD5的網站(如 - Option-1,option-2)。 這些網站存儲已經使用的「String和MD5」的映射(所以如果你使用複雜的字符串,他們將無法推斷出原來的字符串)。
搬回部分 - 1
MessageDigest可以用來計算在Java中的給定字符串的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)種組合。
希望它有幫助。 :)
你不能改回md5。這不是一種加密或編碼 - 它是一種*散列*。只是串聯你的字符串。 – RealSkeptic