android - 使用 Android NDK 加密从普通 Android 应用程序传递的数据

标签 android encryption android-ndk blowfish

是否有可能并且值得尝试使用 android NDK 开发一些服务器应用程序,它将加密从普通基于 Java 的应用程序传递给它的数据(或只使用一些内置的 Linux 加密库)?

我尝试使用 Cipher 库,但用 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?

最佳答案

Android 2.2 中的 BouncyCaSTLe 在使用流解密时使用 AES/CBC/PKCS5 时速度非常慢。 CPU 将达到 100%,吞吐量为 5kb/秒。

使用 Chilkat 的速度要快很多,而且 CPU 使用率很低(即使在模拟器中也是如此)。 但是 Chilkat 没有提供 InputStream 来处理流解密,而是在内部缓冲所有加密字节(直到发生堆空间错误)。所以你必须自己管理流解密(例如,通过为每个 block 初始化 chilkat...)

关于android - 使用 Android NDK 加密从普通 Android 应用程序传递的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5014004/

相关文章:

java - 面向初学者的 Android NDK 教程/指南。

java - 如何获取 Spinner 所选项目的 View

android - 使用 Dagger 2 提供函数依赖

wireshark:仅捕获数据层

svn - 通过 gnome-keyring 为 ssh(仅限)客户端颠覆客户端加密密码

android - 如何在 Android 中创建命名管道 (mkfifo)?

java - 可扩展 ListView 的烦人 SQLite 查询问题

java - 安卓SDK : How do you set the screen brightness

java - 三重 DES 加密 C# - 在 Java 中解密

java - 使用 System.loadLibrary 调用加载共享库永远不会返回