Ebean手动解密

时间:2015-05-25 10:01:51

标签: mysql encryption playframework-2.0 ebean

我已使用this SO帖子中提供的答案成功为我的模型中的字段设置加密。但我想知道如何从SQL客户端手动解密该字段以进行调试。我希望这些信息适用于Mysql(Prod数据库),最好是H2(dev数据库)。根据E-bean文档,Mysql使用AES_ENCRYPT / AES_DECRYPT,H2使用ENCRYPT / DECRYPT函数。

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

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

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";     
 }     
}

1 个答案:

答案 0 :(得分:2)

我设法确定了答案。对于My-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>')))