Реализация HMAC-Whirlpool на Android

Кто-нибудь внедрил или использует Hmac-Whirlpool на телефоне Android?
Я нашел whirlpool.java в Интернете, но поставщик безопасности по умолчанию в Android SDK, похоже, не имеет ни Whirlpool, ни Hmac-Whirlpool.


person bob    schedule 27.06.2011    source источник


Ответы (1)


Android имеет урезанную версию Bouncy Castle и, похоже, не разрешает доступ к классу org.bouncycastle.crypto.macs.HMac, вместо этого следует использовать javax.crypto.Mac.getInstance (алгоритм String) (здесь). Опять же, кажется, разрешены только некоторые алгоритмы MAC (я видел, что «HMAC-SHA512» работает). Но если вы решите использовать библиотеку SpongyCastle, вы можете сделать это (здесь):

        CipherParameters p = new KeyParameter(key.getBytes("UTF-8"));

        WhirlpoolDigest w = new WhirlpoolDigest();
        HMac hm = new HMac(w);
        hm.init(p);
        hm.update(inbytes, 0, inbytes.length);
        byte[] result = new byte[hm.getMacSize()];
        hm.doFinal(result, 0);

Включение SpongyCastle может быть проблематичным для многих, потому что оно увеличило размер приложения на 1,84 МБ в Android 2.2. Затем в проект можно было импортировать только соответствующие файлы:

// интерфейсы
org.bouncycastle.crypto.CipherParameters
org.bouncycastle.crypto.Digest
org.bouncycastle.crypto.ExtendedDigest
org.bouncycastle.crypto.Mac

// классы
org.bouncycastle.crypto.params.KeyParameter
org.bouncycastle.crypto.digests.WhirlpoolDigest
org.bouncycastle.crypto.macs.HMac
org.bouncycastle.crypto.DataLengthException< br> org.bouncycastle.crypto.RuntimeCryptoException

person bob    schedule 29.06.2011