【问题标题】:JPA and SQL Server column encryptionJPA 和 SQL Server 列加密
【发布时间】:2012-05-06 14:17:20
【问题描述】:

我正在使用 WebSphere 7 和他们的基于 OpenJPA 的 JPA 2.0 实现,我有一些事情让我发疯。我必须连接到使用数据库列加密的 SQL Server 2008 数据库。加密由几个数据库命令完成:

1 - 通过认证打开对称密钥解密

2 - 使用数据库方法 EncryptByKey 或 DecryptByKey 执行插入/选择/更新/等操作

3 - 关闭对称密钥

我已经搜索过,OpenJPA 似乎不支持此功能。有人知道如何让 OpenJPA 与这种类型的加密很好地配合使用吗?或者我应该跳过这个项目的 JPA 并使用老式的 PreparedStatements?

【问题讨论】:

    标签: sql-server jpa websphere


    【解决方案1】:

    是的,看起来执行本机查询是唯一的方法。所以结果是这样的:

    EntityManager em = getEntityManager();
    Query openKey = em.createNativeQuery("OPEN SYMMETRIC KEY MY_KEY  DECRYPTION BY CERTIFICATE MY_CERT");
    openKey.executeUpdate();
    
    Query query = em.createNativeQuery("SELECT FIRSTNAME, LASTNAME, CONVERT(varchar, DECRYPTBYKEY(SSN)) as SSN from report where record_id = ?", Report.class);
    query.setParameter(1, recordId);
    report = (Report) query.getSingleResult();
    
    Query closeKey = em.createNativeQuery("CLOSE SYMMETRIC KEY MY_KEY");
    closeKey.executeUpdate();
    

    【讨论】:

      猜你喜欢
      • 2011-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-10
      • 2017-04-19
      • 1970-01-01
      • 2011-01-26
      • 1970-01-01
      相关资源
      最近更新 更多