【问题标题】:How to encrypt and decrypt a sqlite3 database in Java?如何在 Java 中加密和解密 sqlite3 数据库?
【发布时间】:2020-12-18 20:13:31
【问题描述】:

首先我需要加密我的 sqlite3 数据库,因为有非常敏感的数据。 然后我只需要在需要时解密我的数据库。我该怎么办? 我正在使用 sqlite3-jdbc-3.30.1 和用于 Sqlite 的数据库浏览器。 我的数据库包含很多字符串。我的数据是这样的:

ID、引理、定义

1,你好,打招呼的一种表达方式

Connection conn = null;
    try {
        conn = DriverManager.getConnection("jdbc:sqlite:C:\\sqlite databases\\library.db"); 
     
    }
    catch(SQLException exc) {}

【问题讨论】:

  • 如何访问数据库?通过 JPA 实体?还是普通的 JDBC?还是什么?
  • 简单的JDBC,我用的是sqlite3 jdbc
  • 除非 sqlite API 确实支持通用加密,否则您必须使用完善的 java 加密 API 对每个读/写操作“手动”执行此操作。我建议使用 AES256 算法。
  • 我认为您不能使用 java crypto API 直接加密 db 文件
  • 不是整个数据库,而是您写入或从字段中读取的每个字符串。

标签: java string sqlite encryption


【解决方案1】:

我建议您使用 SqlCipher 这是链接:

https://www.zetetic.net/sqlcipher/

【讨论】:

    【解决方案2】:

    试试这个

    http://sqlite-crypt.com/

    它将加密数据库数据

    【讨论】:

    • 我的问题是另一个
    【解决方案3】:

    首先我需要加密我的 sqlite3 数据库,因为有 非常敏感的数据。

    检查SQLite Encryption Extension 是否加密。

    然后我只需要在需要时解密我的数据库。

    您可以使用已用于加密的相同秘密字符串来解密加密数据。该链接(如上所示)包含有关加密和解密的信息。查看this 的示例,了解如何使用密钥完成 AES 加密和解密。

    注意:只加密/解密敏感数据,但绝不加密密码、密码问题/答案等秘密数据。否则,有权访问解密逻辑的任何人(例如其他开发人员)都可以解密它。试想一个场景,您加密密码并将其保存在数据库中。任何人(包括您)都应该能够解密它吗?如果是,您的客户会信任您吗?

    您可能会问,您将如何允许客户使用他们将在登录表单中输入的纯密码登录。答案是,使用您在将密码保存到数据库时应用的相同逻辑对输入的密码进行加密,并比较加密的字符串,而不是将数据库中的解密密码与客户输入的明文密码进行比较。

    【讨论】:

    • 是否有 SQLite 加密扩展文件?如何在 DB Browser for SQLite 上轻松使用它?
    猜你喜欢
    • 2012-03-19
    • 2014-08-29
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-04
    • 2013-09-18
    • 1970-01-01
    相关资源
    最近更新 更多