¿Cómo convierto una cadena grande en hexadecimal y luego en byte?

Trabajo con teléfonos celulares y trato con los números de MEID a diario. Así que en lugar de buscar en línea una calculadora MEID (un número hexadecimal de longitud 14) para pseudo ESN (un número hexadecimal de longitud 8), pensé que puedo crear mi propio programa. La forma de obtener un pESN de MEID es bastante simple en teoría. Por ejemplo, dado MEID 0xA0000000002329, para hacer un pESN, SHA-1 debe aplicarse al MEID. SHA-1 en A0000000002329 da e3be267a2cd5c861f3c7ea4224df829a3551f1ab. Tome los últimos 6 números hexadecimales de este resultado y agréguelos a 0x80; el resultado es 0x8051F1AB.

Ahora aquí está el código que tengo hasta ahora:

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());
}  

El problema es que utilizando este método, SHA-1 en A0000000002329 proporciona a89b611b421f57705bd013297ce3fc835f706ab0 en lugar de e3be267a2cd5c861f3c7ea4224df829a3551f1ab. ¿¿Qué estoy haciendo mal aquí??

Alguien me dio una pista de que"el truco es aplicar SHA-1 al número que representa el MEID, no a la cadena que representa al MEID. Deberá procesarlo byte a byte, por lo que debe asignarle dos números hexadecimales a la vez (desde dos los números hexadecimales forman un byte) y asegúrese de que se interpreten como números y no como caracteres ASCII ". Si esto es cierto, ¿cómo cambio mi cadena en hexadecimal y luego en byte para que SHA1 pueda darme el resultado correcto?

Respuestas a la pregunta(3)

Su respuesta a la pregunta