【发布时间】:2011-02-16 08:13:29
【问题描述】:
是否有可能并且值得尝试使用 android NDK 开发一些服务器应用程序,该应用程序将加密从普通基于 Java 的应用程序传递给它的数据(或仅使用一些内置的 Linux 加密库)?
我尝试使用 Cipher 库,但用 AES 加密 2MB 文件花了将近一分钟。在 Android 2.3(?)之前,河豚在 Cipher 中不可用。我怀疑它会更快。
我在 Symbian 上使用河豚进行加密,它的速度要快得多(不到 5-10 秒),所以我认为在 android 中它会因为使用 Java 虚拟机而变慢,我想尝试使用本机应用程序。
以前有人做过吗?
编辑:NDK 中的加密速度要快得多。在那里做。 AES 有一个类似的问题,答案相同:AES decryption on Android too slow to be usable. Will NDK be faster? Other ideas?
【问题讨论】:
-
我在 Java 中实现了相当多的加密算法,在这方面它肯定比 C/C++ 慢很多。我没有让 Skein 在 Oracle JVM 上运行比 100 MB/s 快得多。如果您实施 AES,请尝试获得一个良好的展开循环(例如,一次迭代 8 轮)并确保您的应用程序不会执行任何不必要的内存复制。
-
我也在尝试在 NDK 中实现 AES。你能分享一下你做了什么吗?您是否在 NDK 项目中为 AES 使用了其他提供商,或者您是否推出了自己的实现?
-
我使用的是河豚,实现取自there。
标签: android encryption android-ndk blowfish