HMAC Whirlpool在Android中的实现

HMAC Whirlpool在Android中的实现,android,hmac,message-digest,Android,Hmac,Message Digest,有人在Android手机上实现或使用Hmac Whirlpool吗? 我在互联网上找到了,但Android SDK中的默认安全提供商似乎没有Whirlpool或Hmac Whirlpool。Android已经削减了Bouncy Castle的版本,似乎不允许访问org.bouncycastle.crypto.macs.Hmac类,而应该使用javax.crypto.Mac.getInstance(字符串算法)()。同样,似乎只允许使用一些MAC算法(我看到“HMAC-SHA512”正在工作)。但

有人在Android手机上实现或使用Hmac Whirlpool吗?

我在互联网上找到了,但Android SDK中的默认安全提供商似乎没有Whirlpool或Hmac Whirlpool。

Android已经削减了Bouncy Castle的版本,似乎不允许访问org.bouncycastle.crypto.macs.Hmac类,而应该使用javax.crypto.Mac.getInstance(字符串算法)()。同样,似乎只允许使用一些MAC算法(我看到“HMAC-SHA512”正在工作)。但如果您决定使用SpongyCastle库,您可以这样做():

包括SpongyCastle对许多人来说可能是个问题,因为它在android 2.2中增加了1.84MB的应用程序大小。然后,只能将相关文件导入到项目中:

//接口
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
org.bouncycastle.crypto.RuntimeCryptoException

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