MD5 Erzeugt 31 Zeichen-hash in Java

Ich bin mit dem folgenden code-block zum erzeugen von MD5-hashes:

public static String encode(String data) throws Exception {

    /* Check the validity of data */
    if (data == null || data.isEmpty()) {
        throw new IllegalArgumentException("Null value provided for "
                + "MD5 Encoding");
    }

    /* Get the instances for a given digest scheme MD5 or SHA */
    MessageDigest m = MessageDigest.getInstance("MD5");

    /* Generate the digest. Pass in the text as bytes, length to the
     * bytes(offset) to be hashed; for full string pass 0 to text.length()
     */
    m.update(data.getBytes(), 0, data.length());

    /* Get the String representation of hash bytes, create a big integer
     * out of bytes then convert it into hex value (16 as input to
     * toString method)
     */
    String digest = new BigInteger(1, m.digest()).toString(16);

    return digest;
}

Wenn ich den oben genannten code-segment mit String-Daten als [12, B006GQIIEM, MH-ANT2000] ist die Ausgabe eine 31-stellige hash - 268d43a823933c9dafaa4ac0e756d6a.

Gibt es irgendwelche Probleme mit dem MD5-hash-Funktion oder es gibt ein problem in dem code oben?

Habe ich gerade gefunden hier, dass es eine 0 am Anfang übersprungen habe. Ich habe versucht, online-MD5-generator hier und es ist auch das gleiche wie 0268d43a823933c9dafaa4ac0e756d6a. Muss ich das Präfix ein 0 jedes mal, wenn die Länge der hash ist nicht 32?
Ist Ihre Eingabe [12, B006GQIIEM, MH-ANT2000] ?
Aber als ich versuchte, geben Sie Eingabe, wie oben, Spiel mir die Ausgabe a722cc2bf6bf1fcf579e70d4b2ce721f 32 bytes.
Ja. Klammern sind Teil der Eingabe.
Dann warum bin ich immer der 32-bit-kodierten text mit Ihrem code, wie ich oben sagte

InformationsquelleAutor divinedragon | 2012-11-16

Schreibe einen Kommentar