Pessoal tem como eu utilizar MD5 em uma aplicação Java para a Web? É mais viável eu fazer esse processo em um servlet ou no próprio JSP mesmo?
e por que não poderia ?
Pelo livro sagrado do MVC o correto seria fazer isso na servlet e mostrar o resultado no jsp (ou qualquer outra forma de view)
pode parecer alarmismo, mas eu te recomendaria o SHA-1 (ou outro da familia SHA-n) no lugar do MD5…
Se não fosse pedir demais teria um exemplo ou API para eu pesquisar a forma de utilização.
import java.security.*;
public class PasswordMD5 {
/** Exemplo */
public static void main(String[] args) {
try {
String password = PasswordMD5.toPassword ("NicoleKidman"); // a senha cadastrada
System.out.println ("password = " + password);
String password2 = PasswordMD5.toPassword ("NicoleKIdman"); // usuário digitou errado
System.out.println ("password2 = " + password2);
String password3 = PasswordMD5.toPassword ("NicoleKidman"); // usuário digitou certo
System.out.println ("password3 = " + password3);
if (!password.equals(password2)) {
// como a senha não bate...
System.out.println ("password2 eh uma senha incorreta");
}
if (password.equals(password3)) {
// como a senha bate...
System.out.println ("password3 eh uma senha correta");
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
/** Converte dados para sua representação hexadecimal */
private static String bytesToHex (byte[] b) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < b.length; ++i) {
sb.append ((Integer.toHexString((b[i] & 0xFF) | 0x100)).substring(1,3));
}
return sb.toString();
}
/** Converte uma senha para o seu MD5 */
public static String toPassword (String data) throws NoSuchAlgorithmException {
byte[] mybytes = data.getBytes();
MessageDigest md5 = MessageDigest.getInstance("MD5");
byte[] md5digest = md5.digest (mybytes);
return bytesToHex (md5digest);
}
}
Obrigado.