Amigos,
estou tentando criar uma classe que me retorne o md5 de uma string passada.
Estou com o código md5 em asp, delphi e javaScript que me retornam o mesmo resultado, mas em java nao estou conseguindo. Vejam so:
passando como parametro a String: troca123 o retorno (em asp, delphi e javascript) é: 34d1bee6128a1947122a22ac23f92245
Em java, com o código abaixo o resultado é diferente... alguem pode me ajudar!?
Código Java Utilizado:
package teste;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import sun.misc.BASE64Encoder;
public class Cripto {
private static Cripto instance;
private Cripto() {
}
public static synchronized Cripto getInstance() // step 1
{
if (instance == null) {
instance = new Cripto();
}
return instance;
}
public synchronized String encrypt(String plaintext) throws Exception {
MessageDigest md = null;
try {
md = MessageDigest.getInstance("MD5"); // step 2
} catch (NoSuchAlgorithmException e) {
throw new Exception(e.getMessage());
}
byte raw[] = md.digest(); // step 4
String hash = (new BASE64Encoder()).encode(raw); // step 5
return hash; // step 6
}
public synchronized boolean check(String plainText, String cryptText ) throws Exception {
return cryptText.equals( getInstance().encrypt( plainText ) );
}
public static void main(String[] args) throws Exception {
String plain = "troca123";
String crypt = Cripto.getInstance().encrypt( plain );
System.out.println( "Plain: " + plain );
System.out.println( "Crypt: " + crypt );
System.out.println( "Check: " + Cripto.getInstance().check(plain , crypt ) );
}
}