0

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

4

1 回答 1

0

Android 有 Bouncy Castle 的精简版,似乎不允许访问 org.bouncycastle.crypto.macs.HMac 类,而应使用 javax.crypto.Mac.getInstance(String algorithm) (此处)。再次,似乎只允许一些 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 对许多人来说可能会有问题,因为它在 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

于 2011-06-29T03:58:43.157 回答