java - 如何使用服务器端java加密sqlite db文件以便flex/air客户端可以读取它?

标签 java apache-flex sqlite encryption

我们正在尝试在服务器上使用java创建一个sqlite db文件,并对其进行加密。然后,我们将加密的数据库文件发送到客户端的电脑,该电脑正在运行 Adob​​e Air 桌面应用程序。然后,air 应用程序需要能够打开/读取加密的数据库文件(客户端是只读的)。

我们使用的是 java 1.6、flex/actionscript 4.5 和 Air 3.1。

我们可以在服务器上创建sqlite db文件并将其发送到客户端,当我们不加密它时,客户端可以毫无问题地读取它。但我们在加密部分遇到了麻烦。

我们已经阅读了大量有关 Actionscript 使用 AES + CCM 打开加密 sqlite 文件的能力的文档 ( http://help.adobe.com/en_US/as3/dev/WS8AFC5E35-DC79-4082-9AD4-DE1A2B41DAAF.html#WS61068DCE-9499-4d40-82B8-B71CC35D832C )。我们正在尝试使用java的crypto包来加密sqlite db文件。

加密很重要,因为我们不希望客户端能够使用任何 sqlite 浏览器打开 sqlite db 文件,而只能使用我们的 Air 应用程序。

以前有人做过这件事并能为我们指明正确的方向吗?

最佳答案

首先,为什么不通过安全的 amf channel 发送加密文件呢?如果您需要任何额外的安全级别,那么只进行简单的异或加密怎么样?密码学变得相当复杂,并且有两种不同的技术,一种加密,另一种解密 - 大约 - 事情可能会变得很棘手。 异或加密涉及拥有 key 。数据的第一个字符与键的第一个字符进行异或,第二个字符与第二个字符进行异或,依此类推,直到到达键的末尾,然后数据的下一个字符与第一个字符进行异或数据的字符,依此类推,直到到达数据流的末尾。解密是完全相同的算法。 当然,您可以选择一百万种生成 key 的方法。 就我个人而言,我不相信当前的 ActionScript 加密库能为我做到这一点。但这纯粹是见仁见智的问题。并重写一个... 无论如何,祝你好运。

关于java - 如何使用服务器端java加密sqlite db文件以便flex/air客户端可以读取它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8977456/

相关文章:

Java3d : Texture is not applied to OBJ model properly

java - 我正在尝试在 JLabel 下设置 JTextField

ios - 与 XCode 相比,使用 Flex SDK 设计的 iOS 应用程序的局限性

apache-flex - 使标题窗口适合内容

java - IntentService 正在卡住我的应用程序 UI

swift - 无法访问 fts4 虚拟表 - SQLite 数据库错误 : 1 "no such table:"

c++ - 运行 C++ 应用程序后出现 SQLite 控制台

java - Java 中 XMLGregorianCalendar 的 NoClassDefFoundError

java - 如何在 Android 中将 Bangla 字体设置为 TextView

apache-flex - 通过 URLRequest 上传 Youtube?