Как мне преобразовать большую строку в гекс, а затем в байт?

Я работаю с мобильными телефонами и ежедневно работаю с номерами MEID. Поэтому вместо того, чтобы искать в Интернете MEID (шестнадцатеричное число длины 14) для калькулятора псевдо-ESN (шестнадцатеричное число длины 8), я решил, что могу создать свою собственную программу. Способ получения pESN из MEID довольно прост в теории. Например, учитывая MEID 0xA0000000002329, чтобы сделать pESN, SHA-1 должен быть применен к MEID. SHA-1 на A0000000002329 выдает e3be267a2cd5c861f3c7ea4224df829a3551f1ab. Возьмите последние 6 шестнадцатеричных чисел этого результата и добавьте его к 0x80 - результат будет 0x8051F1AB.

Теперь вот код, который у меня есть:

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

Проблема в том, что при использовании этого метода SHA-1 на A0000000002329 выдает a89b611b421f57705bd013297ce3fc835f706ab0 вместо e3be267a2cd5c861f3c7ea4224df829a3551f1ab. Что я здесь не так делаю ??

Кто-то дал мне подсказку, что"the trick is to apply SHA-1 to the number representing the MEID, not the string representing the MEID. You'll need to process it byte-by-byte, so you must give it two hex numbers at a time (since two hex numbers make a byte) and make sure they are interpreted as numbers and not ASCII characters", Если это правда, то как мне изменить мою строку в шестнадцатеричный, а затем в байтовый, чтобы SHA1 мог дать мне правильный результат ???

Ответы на вопрос(3)

Ваш ответ на вопрос