O algoritmo MessageDigest SHA1 do Java retorna um resultado diferente da função SHA1 do php

Tenho uma tabela SQL com nomes de usuário e senhas. As senhas são codificadas usando o método digest () da MessageDigest. Se eu codificar uma senha - digamos "abcdef12" - com o método digest () do MessageDigest e depois convertê-la em valores hexadecimais, a String será diferente do que se eu fizer o mesmo usando o método SHA1 do PHP. Eu esperaria que esses valores fossem exatamente os mesmo

Code usado para codificar as senhas:

MessageDigest md = MessageDigest.getInstance("SHA-1");
byte[] passbyte;
passbyte = "abcdef12".getBytes("UTF-8");
passbyte = md.digest(passbyte);

A conversão da String em hexadecimal é feita usando este método:

public static String convertStringToHex(String str) {

    char[] chars = str.toCharArray();

    StringBuffer hex = new StringBuffer();
    for (int i = 0; i < chars.length; i++) {
        hex.append(Integer.toHexString((int) chars[i]));
    }

    return hex.toString();
}

Senha: abcdef12

Aqui está a senha retornada por muitos geradores on-line de hash SHA1 e PHP SHA1 () - função: d253e3bd69ce1e7ce6074345fd5faa1a3c2e89ef

Aqui está a senha codificada pelo MessageDigest: d253e3bd69ce1e7ce674345fd5faa1a3c2e2030ef

Estou esquecendo algo?

Igor.

Edit: Encontrei alguém com um problema semelhante: C # SHA-1 vs. PHP SHA-1 ... Resultados diferentes?. A solução foi alterar codificações .. mas não posso alterar codificações no lado do servidor, pois as senhas nessa tabela SQL não são criadas pelo meu aplicativo. Uso a codificação SHA1 do lado do cliente usando uma classe JavaScript SHA1 (mais precisamente: uma classe Google Web Toolkit). Funciona e codifica a string conforme o esperado, mas aparentemente usando caracteres ASCII? ..

questionAnswers(4)

yourAnswerToTheQuestion