Кто-нибудь внедрил или использует Hmac-Whirlpool на телефоне Android?
Я нашел whirlpool.java в Интернете, но поставщик безопасности по умолчанию в Android SDK, похоже, не имеет ни Whirlpool, ни Hmac-Whirlpool.
Реализация HMAC-Whirlpool на Android
Ответы (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