我正在开发一个计算密集型的 Android 加密应用程序。 我必须处理大小在 80 到 1024 位之间的正整数。 我需要模幂和复合性测试。 我意识到唯一的选择(如果我只想用 Java 编写代码)是使用 BigInteger 类。 在性能方面还有更好的解决方案吗? 例如,我考虑使用 GNU MP Bignum 库和 JNI 用 C 语言编写应用程序。 从性能角度来看,这值得吗? 这是否需要仅用于应用程序入口点的 JNI 粘合代码,还是存在其他问题?
最佳答案
Android 使用 OpenSSL 的 BN API 来实现其 BigInteger 算术的一部分,因此它应该相当快。要查找慢速方法,请查看 Android's BigInteger documentation对于任何附有“实现说明”的内容。
正如其他人所指出的:不要实现自己的加密原语,因为你会遇到麻烦。例如,GMP 会泄露计时信息。
关于java - Android 上 Java BigInteger 对于加密计算密集型应用程序的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20115961/