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

如何使用服务器端java加密sqlite db文件,以便flex/air客户端可以读取它?,java,apache-flex,sqlite,encryption,Java,Apache Flex,Sqlite,Encryption,我们正试图在服务器上使用java创建一个sqlite db文件,并对其进行加密。然后我们将加密的db文件发送到客户端的pc,该pc上运行着Adobe Air桌面应用程序。然后,air应用程序需要能够以只读方式打开/读取加密的db文件客户端 我们使用的是Java1.6、flex/ActionScript4.5和AIR3.1 我们可以在服务器上创建sqlite db文件并将其发送到客户端,当我们不加密它时,客户端可以毫无问题地读取它。但我们在加密部分遇到了问题 我们已经阅读了很多关于Actionsc

我们正试图在服务器上使用java创建一个sqlite db文件,并对其进行加密。然后我们将加密的db文件发送到客户端的pc,该pc上运行着Adobe Air桌面应用程序。然后,air应用程序需要能够以只读方式打开/读取加密的db文件客户端

我们使用的是Java1.6、flex/ActionScript4.5和AIR3.1

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

我们已经阅读了很多关于Actionscript使用AES+CCM打开加密sqlite文件的能力的文档。我们正在尝试使用java的加密包来加密sqlite db文件

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


以前有没有人这样做过,可以为我们指出正确的方向?

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

应用程序的性质是否非常安全?高级用户将能够反转用于加密文件的方法,仅加密不足以阻止已确定的用户。请记住,要使Air应用程序解密文件,它必须具有解密密钥。如果解密密钥在用户计算机上的程序中,一个熟练的用户将提取并发布它。我们还不太关心一个非常坚定的用户。在这一点上,只是一个非专业用户。我们认为密钥有两部分,一部分编译到air可执行文件中,另一部分随db文件一起发送。然而,现在,我们只是想弄清楚如何在java端进行加密,在air端进行解密。java代码是什么样子的?actionscript代码是什么样子的?谢谢你的反馈。正如你所建议的,我们正处于调查某件事的阶段。这不是通过安全的amf通道发送文件的问题。问题是,一旦文件到达客户端的pc上,它就会留在那里,以便他们可以随时重新打开它。因此,我们不希望用户能够用任何sqlite浏览器打开sqlite db文件;他们应该只能用我们的应用程序打开它。我唯一的另一个建议是对存储在sqlite数据库中的数据进行加密。因此,在插入/更新时,您会加密,在选择时,您会解密。如果您愿意,您可以在创建表时尽量使用加密和解密函数,这样即使您的表和列也会被混淆。我想实现这一点最简单的方法是扩展sqlite jdbc适配器。然后,加密的jdbc适配器可以在db analyzer工具squirrel或aqua中使用,也可以在java中使用,在操作脚本中,只要在插入时加密,在删除时解密即可