Android中的HMAC-Whirlpool实现

时间:2011-06-27 00:56:49

标签: android hmac message-digest

有人在Android手机上实施或使用过Hmac-Whirlpool吗? 我在互联网上找到whirlpool.java,但Android SDK中的默认安全提供程序似乎没有Whirlpool或Hmac-Whirlpool。

1 个答案:

答案 0 :(得分:0)

Android已下载Bouncy Castle版本,似乎不允许访问org.bouncycastle.crypto.macs.HMac类,而应使用javax.crypto.Mac.getInstance(字符串算法)({{3} })。似乎只允许一些MAC算法(我看到“HMAC-SHA512”正在工作)。但是如果你决定使用SpongyCastle库,你可以这样做(here):

        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可能会有很多问题,因为它在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