Como converter uma string grande em hexadecimal e depois em byte?

Eu trabalho com celulares e lida com números MEID diariamente. Então, em vez de procurar online por um MEID (um número hexagonal de comprimento 14) para pseudo ESN (um número hexagonal de comprimento 8) calculadora, eu percebi que eu posso fazer o meu próprio programa. A maneira de obter um pESN da MEID é bastante simples na teoria. Por exemplo, dado o MEID 0xA0000000002329, para fazer um pESN, o SHA-1 precisa ser aplicado ao MEID. SHA-1 em A0000000002329 dá e3be267a2cd5c861f3c7ea4224df829a3551f1ab. Pegue os últimos 6 números hexadecimais desse resultado e anexe-o a 0x80 - o resultado é 0x8051F1AB.

Agora aqui está o código que eu tenho até agora:

public void sha1() throws NoSuchAlgorithmException {

    String hexMEID = "A0000000002329";

    MessageDigest mDigest = MessageDigest.getInstance("SHA1");      

    byte[] result = mDigest.digest(hexMEID.getBytes());
    StringBuilder sb = new StringBuilder();

    for (int i = 0; i < result.length; i++) {
        sb.append(Integer.toString((result[i] & 0xff) + 0x100, 16).substring(1));
    }

    System.out.println(sb.toString());
}  

O problema é que usando esse método, SHA-1 em A0000000002329 fornece a89b611b421f57705bd013297ce3fc835f706ab0 em vez de e3be267a2cd5c861f3c7ea4224df829a3551f1ab. O que eu estou fazendo errado aqui??

Alguém me deu uma dica de que"o truque é aplicar SHA-1 ao número que representa o MEID, não a string que representa o MEID. Você precisará processá-lo byte por byte, então você deve dar dois números hexadecimais de cada vez (desde dois números hexadecimais fazem um byte) e certifique-se de que eles são interpretados como números e não caracteres ASCII ". Se isso é verdade, então como eu mudo minha string para hexadecimal e depois para byte, para que o SHA1 possa me dar o resultado correto ???

questionAnswers(3)

yourAnswerToTheQuestion