Невозможно вывести правильный хэш в Java. Что случилось?

В моем приложении для Android у меня есть хеш SHA256, который я должен дополнительно хешировать с помощью алгоритма дайджеста сообщений RIPEMD160.

Я могу вывести правильный хеш sha256 и palemd160 для любой строки, но когда я пытаюсь хешировать хэш sha256 с помощью palemd160, я получаю хеш, который является неправильным.

Согласно онлайн-хеш-калькуляторам, значение строки SHA256 'тестовое задание'(все строчные):

9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08

И значение строки RIPEMD160 'тестовое задание' является:

5e52fee47e6b070565f74372468cdc699de89107

Значение из хеширования полученного хэша sha256 с использованием palemd160 согласно онлайн-вычислениям:

4efc1c36d3349189fb3486d2914f56e05d3e66f8

И то, что мое приложение дает мне:

cebaa98c19807134434d107b0d3e5692a516ea66

что явно неправильно.

Вот мой код:

public static String toRIPEMD160(String in)
{
    byte[] addr = in.getBytes();
    byte[] out = new byte[20];
    RIPEMD160Digest digest = new RIPEMD160Digest();
    byte[] sha256 = sha256(addr);
    digest.update(sha256,0,sha256.length);
    digest.doFinal(out,0);
    return getHexString(out);
}

public static byte[] sha256(byte[] data)
{
    byte[] sha256 = new byte[32];
    try
    {
        sha256 = MessageDigest.getInstance("SHA-256").digest(data);
    }
    catch(NoSuchAlgorithmException e)
    {}

    return sha256;
}

Для алгоритма palemd160 вам нужны bouncycastle и java.security.MessageDigest для sha256.

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

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