Ebean手工解密

Ebean manual decryption

我已经使用 this SO post 中提供的答案成功地为模型中的字段设置了加密。但我想知道如何从 SQL 客户端手动解密字段以进行调试。我想要 Mysql(Prod 数据库)的信息,最好是 H2(开发数据库)的信息。根据 E-bean 文档 Mysql 使用 AES_ENCRYPT/AES_DECRYPT 并且 H2 使用 ENCRYPT/DECRYPT 函数。

  @Encrypted
  @Column(columnDefinition="varchar(50)")
  public String password;

注意:我已将加密字段的数据类型设置为 varchar 而不是 binary,如下所示。因此,Ebean 可能会对生成的二进制数据进行额外的 Hex。

class CustomEncryptKey implements EncryptKey{ 

   private String tableName;
   private String columnName;

   public CustomEncryptKey(String tableName, String columnName){
      this.tableName = tableName;
      this.columnName = columnName;
   }

 @Override 
 public String getStringValue() {     
        return "my-encryption-key";     
 }     
}

我设法找到了答案。对于我-SQL

解密:

SELECT CAST(AES_DECRYPT(encrypted-field,'my-encryption-key') as CHAR(50)) from table

加密:

SELECT AES_ENCRYPT(encrypted-field,'my-encryption-key') from table;

对于 H2:

加密:

ENCRYPT('AES', STRINGTOUTF8('<encryption-key>'), STRINGTOUTF8('<text to be encrypted>'))

解密:

TRIM(CHAR(0) FROM UTF8TOSTRING(DECRYPT('AES', STRINGTOUTF8('<encryption-key>'), '<text to be encrypted>')))