【问题标题】:Bouncy Castle key generation extremely slow on AndroidAndroid 上的 Bouncy Castle 密钥生成速度极慢
【发布时间】: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


    【解决方案1】:

    Jake,虽然跟踪 JIT 应该可以很好地与 Crypto 库一起使用,但您可以尝试使用 NDK 来执行此操作吗?据我所知,即使在 JIT 之后,NDK 的性能改进也很显着。 (大约 10-50 倍)

    【讨论】:

    • 我在 NDK 上使用 Botan 进行了尝试...在
    猜你喜欢
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    • 2018-10-06
    相关资源
    最近更新 更多