Frage

Im Beispiel hier http://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html#JDBCRealm die Art von user_pass Spalte ist varchar(15), während java.security.MessageDigest Klasse nimmt und kehrt zurück byte[].Welche Konvertierung soll auf das Passwort angewendet werden? 'abcd' (zum Beispiel), um es in einen MD5-Digest umzuwandeln, der von Tomcat erwartet wird?

PS.

Ich habe Folgendes versucht und es funktioniert (stimmt mit dem Ergebnis von „digest.bat“ überein).Die Frage ist jetzt nur noch die Länge:Der Digest ist länger als 15 Zeichen.Kann ich einfach den Tisch ändern?

public class DigestRunner {

    /**
     * @param args
     * @throws NoSuchAlgorithmException 
     */
    public static void main(String[] args) throws NoSuchAlgorithmException {
        String password = "abcd";
        MessageDigest dig = MessageDigest.getInstance("MD5");

        System.out.println(toString(dig.digest(password.getBytes())));

    }


    public static String toString(byte[] ba)
    {
        StringBuilder hex = new StringBuilder(ba.length * 2);

        for(byte b : ba)
            hex.append(String.format("%02x", b));

        return hex.toString();
    }

}
War es hilfreich?

Lösung

varchar(15) ist definitiv zu kurz für Digest-Passwörter, reicht aber normalerweise für Klartext-Passwörter aus.Erhöhen Sie einfach die Größe.

Ich habe den folgenden Code zum Erstellen von Digest-Passwörtern verwendet:

final MessageDigest messageDigest = java.security.MessageDigest.
        getInstance("SHA-256");
final byte bin[] = messageDigest.digest(("admin").getBytes());
System.out.println(Base64.encodeBase64String(bin));

(Base64 aus Apache Commons-Codec)

Darüber hinaus gibt es eine digest.bat/digest.sh Überprüfen Sie es in Tomcat auf der Seite, die Sie verlinkt haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top