【问题标题】:encrypting HSQLDB: select CRYPT_KEY not working加密 HSQLDB:选择 CRYPT_KEY 不起作用
【发布时间】:2013-12-05 13:19:09
【问题描述】:

我正在尝试通过 HSQLDB 数据库生成 AES 加密密钥来工作。此功能的文档非常基本,并且我在这里找到了此任务的唯一代码清单: http://www.coderanch.com/t/515884/JDBC/databases/Encrypted-database-HSQL

不幸的是,这段代码不起作用,我得到一个 java.sql.SQLException:无效游标状态:标识符游标未定位在 UPDATE、DELETE、SET 或 GET 语句中的行上:;结果集为空

这是来自 coderanche 帖子的代码:

    Class.forName("org.hsqldb.jdbc.JDBCDriver");
    Connection con = DriverManager.getConnection("jdbc:hsqldb:file:some_db", "SA", "");
    Statement stmt = con.createStatement();  
    ResultSet rs = stmt.executeQuery("select CRYPT_KEY('AES', null) from some_table");
    rs.next();
    String key = rs.getString(1);

【问题讨论】:

    标签: java encryption hsqldb


    【解决方案1】:

    使用它来获取密钥:

    CALL CRYPT_KEY('AES', null);
    

    【讨论】:

    • 感谢您的回答,现在可以使用了。我还在 HSQLDB 支持论坛中找到了另一个可行的解决方案:SELECT CRYPT_KEY('AES', NULL) FROM (VALUES(0)) 也可以正常工作
    • 我不明白。我假设我们正在创建数据库,然后我们在其中创建表,然后我们在该表上应用 crypt_key() 函数,我们得到的是一个键(如果有 3 个记录,则为 3 个键),我们返回并适用于hsql中已经创建的数据库?是这样吗?如果没有,请帮助我完成示例代码
    • 首先您使用任何其他数据库获取密钥,然后使用该密钥创建新数据库。
    猜你喜欢
    • 2018-07-25
    • 1970-01-01
    • 2014-04-09
    • 2016-11-07
    • 2014-01-05
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    相关资源
    最近更新 更多