首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Android NDK对从普通android应用程序传递的数据进行加密

使用Android NDK对从普通android应用程序传递的数据进行加密
EN

Stack Overflow用户
提问于 2011-02-16 16:13:30
回答 5查看 8.4K关注 0票数 8

使用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?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-05-26 22:10:59

你测试的是什么版本的安卓?请记住,从Froyo开始,有一个跟踪JIT,它对于密码库中的数学密集型循环应该工作得很好。

对于较旧的版本,您可能希望使用NDK完成此操作,是的。我不知道你为什么需要一个服务器--简单地编译任何好的/快速的加密库,并使用NDK围绕它做一个包装器。然后,您可以简单地使用基于java的应用程序中的包装器。

票数 1
EN

Stack Overflow用户

发布于 2011-07-22 18:44:04

在使用流解密时,android2.2中的BouncyCastle在使用AES/CBC/PKCS5时速度非常慢。CPU将达到100%,吞吐量为5KB/秒。

使用Chilkat的速度更快,CPU使用率更低(即使在Emulator中也是如此)。但是Chilkat没有提供InputStream来处理流解密,而是在内部缓冲所有加密的字节(直到发生堆空间错误)。因此,您必须自己管理流解密(例如,为每个块初始化chilkat ...)

票数 2
EN

Stack Overflow用户

发布于 2011-05-28 04:29:21

为了回答你的问题,是的,你可能会写一些可以与NDK一起运行的东西,但我不明白你为什么需要这样做。

如果您只想加密进入sql存储的数据,您可以查看SQLCipher ( https://guardianproject.info/code/sqlcipher/ )。

您也可以尝试使用一些bouncy castle库( http://www.bouncycastle.org/java.html )。它们可能比android one内置的更快,或者它们可能有一个可以使用的河豚库。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5014004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档