【发布时间】:2012-03-07 16:25:54
【问题描述】:
我有一个使用 Bouncy Castle 构建的 Android 加密应用程序(实际上使用的是 Spongy Castle,但本质上是一样的)。由于某种原因,密钥生成非常慢(大约几分钟)。
这是我正在使用的测试方法:
@Test
public void testHMAC()
{
System.out.println(getTestAnnouncement("testHMAC"));
long start = System.currentTimeMillis();
final PBEParametersGenerator generator = new PKCS5S2ParametersGenerator();
generator.init(PBEParametersGenerator.PKCS5PasswordToBytes(("mypassword").toCharArray()), new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 }, 8192);
byte[] key = ((KeyParameter)generator.generateDerivedParameters(256)).getKey();
long time = System.currentTimeMillis() - start;
Assert.assertTrue("Generated " + key.length + "-byte key, took " + time + "ms", true);
}
当我在我的 2.4 GHz Intel Core 2 Duo 机器上运行它时,大约需要 0.05 秒(50 毫秒)。当我在 Android 上运行相同的方法时,它需要 几十万 毫秒(即 ~3-5 分钟)。
我在运行 Android 2.2.1 的 HTC Thunderbolt 上运行它。该应用程序的目标是 2.1,如果这有什么不同的话(我记得读过一些关于 = 2.2)。这是一款非常强大的手机,配备 1 GHz Snapdragon 处理器,生成密钥所需的时间比 PC 长这么多数量级似乎很奇怪。此问题的可能原因是什么?
【问题讨论】:
标签: android bouncycastle