使用android NDK开发一些服务器应用程序,它将加密从普通的基于Java的应用程序传递给它的数据(或者使用一些内置的Linux加密库),这是可能的,也是值得尝试的吗?
我试过使用密码库,但是用AES加密2MB文件花了差不多一分钟的时间。而河豚直到Android 2.3(?)才能在Cipher中使用。而且我怀疑它会更快。
我在Symbian上使用blowfish进行加密,它的速度要快得多(不到5-10秒),所以我认为android的速度会慢一些,因为我使用的是Java虚拟机,我想尝试一下原生应用程序。
以前有人这么做过吗?
编辑: NDK中的加密速度要快得多。在那里做吧。有一个类似的问题,对AES也有相同的答案:AES decryption on Android too slow to be usable. Will NDK be faster? Other ideas?
发布于 2011-05-26 22:10:59
你测试的是什么版本的安卓?请记住,从Froyo开始,有一个跟踪JIT,它对于密码库中的数学密集型循环应该工作得很好。
对于较旧的版本,您可能希望使用NDK完成此操作,是的。我不知道你为什么需要一个服务器--简单地编译任何好的/快速的加密库,并使用NDK围绕它做一个包装器。然后,您可以简单地使用基于java的应用程序中的包装器。
发布于 2011-07-22 18:44:04
在使用流解密时,android2.2中的BouncyCastle在使用AES/CBC/PKCS5时速度非常慢。CPU将达到100%,吞吐量为5KB/秒。
使用Chilkat的速度更快,CPU使用率更低(即使在Emulator中也是如此)。但是Chilkat没有提供InputStream来处理流解密,而是在内部缓冲所有加密的字节(直到发生堆空间错误)。因此,您必须自己管理流解密(例如,为每个块初始化chilkat ...)
发布于 2011-05-28 04:29:21
为了回答你的问题,是的,你可能会写一些可以与NDK一起运行的东西,但我不明白你为什么需要这样做。
如果您只想加密进入sql存储的数据,您可以查看SQLCipher ( https://guardianproject.info/code/sqlcipher/ )。
您也可以尝试使用一些bouncy castle库( http://www.bouncycastle.org/java.html )。它们可能比android one内置的更快,或者它们可能有一个可以使用的河豚库。
https://stackoverflow.com/questions/5014004
复制相似问题