Dans l'exemple ici http://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html#JDBCRealm le type de colonne user_pass
est varchar(15)
, tandis que java.security.MessageDigest
classe prend et renvoie byte[]
. Quelle conversion faut-il appliquer au mot de passe 'abcd'
(par exemple) pour le convertir en résumé MD5, attendu par Tomcat?Comment préparer des mots de passe digest pour Tomcat JDBCRealm?
PS.
J'ai essayé ce qui suit et cela fonctionne (coïncide avec le résultat de digest.bat). La seule question est la longueur maintenant: le résumé est plus long que 15 caractères. Puis-je simplement changer la table?
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();
}
}