java - 实现需要访问 secret 数据的 Java 桌面应用程序

标签 java design-patterns

我有一个 Java 桌面应用程序(一个可运行的 jar),它通过 CD 提供给客户。然后“autorun.inf”自动启动 jar 并且应用程序从 CD 运行(因此在只读环境中运行)。

此应用程序需要访问一些已知数据并以某种方式使用它。由于该应用程序是独立的,因此该数据应以某种文件的形式与应用程序一起分发。

现在是具有挑战性的目标:

  • 此数据只是数字列,类似于数据库表导出。访问它的最方便的方式就像它是一个数据库表,可以在其中对这些文件进行 SQL 查询。

  • 此数据应对用户客户保密。尽管数据必须与应用程序一起分发,但用户无法辨认。因此,数据必须以某种方式加密或混淆。

所以我请求你的帮助,主要是给我一些想法,帮助我理解并与你讨论哪种是实现这些功能的最佳方式。

非常感谢您, 阿尔维斯

编辑#1: 使用嵌入式数据库引擎是一个好主意,可以同时解决这两个问题。但这对我提出了一些问题:

  • 数据库引擎是否需要在某处写入文件?我用 HSQLDB 做了一些测试,我认为它确实如此。这将是一个问题,因为应用程序是从 CD 运行的。

  • 如果它真的需要这样的文件,我是否可以将它们与应用程序一起发布,而不是即时创建?

  • 只是确认一下,如果我使用加密的数据库,我必须在应用程序的某个地方放置让我解密它的 key ,对吗?

最佳答案

一种可能性是使用加密的 SQLite数据库。 SQLite 是一个关系数据库管理系统,其中数据库是文件。

有关 SQLite 中的加密,请查看此处:http://www.hwaci.com/sw/sqlite/see.html

关于java - 实现需要访问 secret 数据的 Java 桌面应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9111414/

相关文章:

ruby-on-rails - Rails - 子类化模型的设计模式是什么?

c# - 为用户实现一组权限的设计模式

java - 如何配置 tomcat 以使用 log4j 登录不同的文件?

java - Spring 交易超时

java - 有没有办法从 JEditorPane 上显示的网站获取响应?

java - Android JNI 中的伪方法描述符

java - 观察者模式和线程

java - 为什么使用 EJB @Schedule 的类不能是抽象类?

java - 什么是一类一责原则?

javascript - 在应用程序中仅使用一种设计模式