Frage Wie kann ich einen MD5-Hash generieren?


Gibt es eine Methode, MD5-Hash einer Zeichenfolge in Java zu generieren?


888
2018-01-06 09:45


Ursprung


Antworten:


java.security.MessageDigest ist dein Freund. Anruf getInstance("MD5") um einen MD5-Nachrichtenauszug zu erhalten, den Sie verwenden können.


534
2018-01-06 09:47



Das MessageDigest Die Klasse kann Ihnen eine Instanz des MD5-Digests bereitstellen.

Achten Sie beim Arbeiten mit Strings und den Crypto-Klassen darauf immer Geben Sie die Codierung an, in der die Byte-Darstellung angezeigt werden soll. Wenn Sie nur verwenden string.getBytes() Es wird die Standardplattform verwendet. (Nicht alle Plattformen verwenden dieselben Standardeinstellungen.)

import java.security.*;

..

byte[] bytesOfMessage = yourString.getBytes("UTF-8");

MessageDigest md = MessageDigest.getInstance("MD5");
byte[] thedigest = md.digest(bytesOfMessage);

Wenn Sie viele Daten haben, werfen Sie einen Blick auf die .update(byte[]) Methode, die wiederholt aufgerufen werden kann. Dann ruf an .digest() um den resultierenden Hash zu erhalten.


647
2018-01-06 09:58



Vielleicht möchten Sie auch auf die DigestUtils Klasse der Apache Commons Codec Projekt, das sehr bequeme Methoden zum Erstellen von MD5- oder SHA-Aufschlüssen bietet.


249
2018-01-06 14:51



Wenn Sie die Antwort tatsächlich als String im Gegensatz zu einem Byte-Array wünschen, könnten Sie immer so etwas tun:

String plaintext = "your text here";
MessageDigest m = MessageDigest.getInstance("MD5");
m.reset();
m.update(plaintext.getBytes());
byte[] digest = m.digest();
BigInteger bigInt = new BigInteger(1,digest);
String hashtext = bigInt.toString(16);
// Now we need to zero pad it if you actually want the full 32 chars.
while(hashtext.length() < 32 ){
  hashtext = "0"+hashtext;
}

245
2018-01-07 19:20



Ich habe es gefunden:

public String MD5(String md5) {
   try {
        java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
        byte[] array = md.digest(md5.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) {
    }
    return null;
}

auf der Website unten nehme ich keine Anerkennung dafür, aber es ist eine Lösung, die funktioniert! Für mich funktionierte viel anderer Code nicht richtig, am Ende fehlten 0s im Hash. Dieser scheint derselbe zu sein wie PHP. Quelle: http://m2tec.be/blog/2010/02/03/java-md5-hex-0093


148
2017-07-03 21:11



Hier ist, wie ich es benutze:

final MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.reset();
messageDigest.update(string.getBytes(Charset.forName("UTF8")));
final byte[] resultByte = messageDigest.digest();
final String result = new String(Hex.encodeHex(resultByte));

wo Hex ist: org.apache.commons.codec.binary.Hex von dem Apache Commons-Projekt.


82
2017-10-01 10:28



Ich habe gerade heruntergeladen commons-codec.jar und bekam perfektes php wie md5. Hier ist Handbuch.

Importieren Sie es einfach in Ihr Projekt und verwenden Sie es

String Url = "your_url";

System.out.println( DigestUtils.md5Hex( Url ) );

und da hast du es.


78
2017-07-30 22:51



Ich habe festgestellt, dass dies der klarste und prägnanteste Weg ist, dies zu tun:

MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(StandardCharsets.UTF_8.encode(string));
return String.format("%032x", new BigInteger(1, md5.digest()));

55
2018-05-08 08:16



Habe diese Lösung gefunden, die viel sauberer ist, wenn man eine String-Darstellung von einem MD5-Hash zurückholt.

import java.security.*;
import java.math.*;

public class MD5 {
    public static void main(String args[]) throws Exception{
        String s="This is a test";
        MessageDigest m=MessageDigest.getInstance("MD5");
        m.update(s.getBytes(),0,s.length());
        System.out.println("MD5: "+new BigInteger(1,m.digest()).toString(16));
    }
}

Der Code wurde aus extrahiert Hier.


32
2018-05-10 09:18