import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class Criptografia {
private static MessageDigest md = null;
static {
try {
md = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException ex) {
ex.printStackTrace();
}
}
private static char[] hexCodes(byte[] text) {
char[] hexOutput = new char[text.length * 2];
String hexString;
for (int i = 0; i < text.length; i++) {
hexString = "00" + Integer.toHexString(text[i]);
hexString.toUpperCase().getChars(hexString.length() - 2,
hexString.length(), hexOutput, i * 2);
}
return hexOutput;
}
public static String criptografar(String pwd) {
if (md != null) {
return new String(hexCodes(md.digest(pwd.getBytes())));
}
return null;
}
}
Estou usando a classe acima para criptografar as senhas do usuario do meu programa, só que quando uso no main...
public static void main(String[] args) {
if(Criptografia.criptografar("123456") == Criptografia.criptografar("123456")) {
System.out.println(true);
}
else {
System.out.println(false);
}
}
era pra ele imprimir true, mas ele imprime false :(
eu estava fazendo no programa de outro jeito, tinha uma variavel que guardava por exemplo a String "123456" já criptografada, ou seja guardava Criptografia.criptografar("123456"), e ai tinha um metodo verificar que fazia basicamente oq esse if-else faz ai emcima, e so retornava false, mesmo com a senha correta!
abraço