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

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


注意:我将加密字段的数据类型设置为varchar而不是二进制,如下所示。因此,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";
 }
}

最佳答案

我设法找出答案。对于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>')))

关于mysql - Ebean手动解密,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30435718/

10-15 18:35