Ma come fai ad avere due md5 diversi della stessa stringa? Ho avviene un qualche tipo di trasformazione all'atto dell'inserimento a database (per quello ti ho suggerito di controllare se la versione in db fosse con il case identico alla versione del digest).
Posta del codice...
La classe "completa" per l'md5 cho ho è:
codice:
import java.security.*;
import java.io.*;
public class encr {
public static String hex(byte[] array) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < array.length; i++) {
sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).toUpperCase().substring(1,3));
}
return sb.toString();
}
public static String md5 (String message) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
return hex (md.digest(message.getBytes("CP1252")));
}
catch (NoSuchAlgorithmException e) {}
catch (UnsupportedEncodingException e) {}
return null;
}
public encr() {
}
}
Comunque, una query del genere col connector si fa con i PreparedStatement:
codice:
String query = "SELECT * FROM pdt_user WHERE nome=? AND password = ?";
PreparedStatement pstm = conn.prepareStatement(query);
/*
* toLowerCase perché l'applicazione da me è interfacciata anche via
* PHP, che genera md5 in lowercase */
String pwd = encr.md5("password_in_chiaro").toLowerCase();
pstm.setString(1, "nome_utente");
pstm.setString(2, pwd);
pstm.execute();
rs = pstm.getResultSet();