Gibt es eine Methode, um einen MD5-Hash einer Zeichenkette in Java zu erzeugen?
Der einzige Einzeiler, den ich kenne, der keine externe Bibliothek verwendet.
Gibt es eine Methode, um einen MD5-Hash einer Zeichenkette in Java zu erzeugen?
Eine weitere Möglichkeit ist die Verwendung der Guava Hashing-Methoden :
Hasher hasher = Hashing.md5().newHasher();
hasher.putString("my string");
byte[] md5 = hasher.hash().asBytes();
Praktisch, wenn Sie bereits Guava verwenden (was Sie wahrscheinlich tun sollten, wenn Sie es nicht tun).
Ich habe eine Klasse (Hash), um einfachen Text in Hash-Formate zu konvertieren: md5 oder sha1, ähnlich wie die php-Funktionen ( md5 , sha1 ):
public class Hash {
/**
*
* @param txt, text in plain format
* @param hashType MD5 OR SHA1
* @return hash in hashType
*/
public static String getHash(String txt, String hashType) {
try {
java.security.MessageDigest md = java.security.MessageDigest.getInstance(hashType);
byte[] array = md.digest(txt.getBytes());
StringBuffer sb = new StringBuffer();
for (int i = 0; i < array.length; ++i) {
sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1,3));
}
return sb.toString();
} catch (java.security.NoSuchAlgorithmException e) {
//error action
}
return null;
}
public static String md5(String txt) {
return Hash.getHash(txt, "MD5");
}
public static String sha1(String txt) {
return Hash.getHash(txt, "SHA1");
}
}
<?php
echo 'MD5 :' . md5('Hello World') . "\n";
echo 'SHA1:' . sha1('Hello World') . "\n";
MD5 :b10a8db164e0754105b7a99be72e3fe5
SHA1:0a4d55a8d778e5022fab701977c5d840bbc486d0
public class HashTest {
@Test
public void test() {
String txt = "Hello World";
assertEquals("b10a8db164e0754105b7a99be72e3fe5", Hash.md5(txt));
assertEquals("0a4d55a8d778e5022fab701977c5d840bbc486d0", Hash.sha1(txt));
}
}
Meine nicht sehr aufschlussreiche Antwort:
private String md5(String s) {
try {
MessageDigest m = MessageDigest.getInstance("MD5");
m.update(s.getBytes(), 0, s.length());
BigInteger i = new BigInteger(1,m.digest());
return String.format("%1$032x", i);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
2 Stimmen
stackoverflow.com/questions/304268/
46 Stimmen
MD5 mag als einseitiges Sicherheitsmerkmal unsicher sein, aber für allgemeine Prüfsummenanwendungen ist es immer noch gut geeignet.