Hibernate @ColumnTransformer Как установить пользовательский ключ - PullRequest
2 голосов
/ 23 декабря 2019

В моем загрузочном приложении Spring я использую hibernate ORM и базу данных в качестве MySql, у меня есть пользовательский объект, имеющий столбец электронной почты. По соображениям безопасности мы зашифровываем всю личную информацию, поэтому я хочу зашифровать электронную почту, используя шифрование AES (поскольку шифрование AES используется в другом компоненте приложения).

Я просматривал документацию по спящему режиму и обнаружил @ColumnTransformerможно использовать для того же. вот моя учетная запись пользователя

@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "users")
public class Users {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;

    private String customerNo;

    @NotBlank(message = "email can't be blank")
    @Email(message = "invalid format")
    @ColumnTransformer(read = "AES_DECRYPT(UNHEX(gmailAddress), 'mySecretKey')", write = "HEX(AES_ENCRYPT(?, 'mySecretKey'))")
    private String gmailAddress;

    @CreationTimestamp
    private LocalDateTime created;

    @UpdateTimestamp
    private LocalDateTime modified;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getCustomerNo() {
        return customerNo;
    }

    public void setCustomerNo(String customerNo) {
        this.customerNo = customerNo;
    }

    public String getGmailAddress() {
        return gmailAddress;
    }

    public void setGmailAddress(String gmailAddress) {
        this.gmailAddress = gmailAddress;
    }

    public LocalDateTime getCreated() {
        return created;
    }

    public void setCreated(LocalDateTime created) {
        this.created = created;
    }

    public LocalDateTime getModified() {
        return modified;
    }

    public void setModified(LocalDateTime modified) {
        this.modified = modified;
    }
}

Кажется, это работает, но я не хочу указывать ключ как @ColumnTransformer(read = "AES_DECRYPT(UNHEX(gmailAddress), 'mySecretKey')"

Я хотел бы передать это значение как. файл ключа, который также используется другими компонентами приложения, построенными на другом языке, например PHP.

Я хотел бы знать, есть ли способ обойти это.

Я промежуточный в весеннем ботинке и новичок в спящем режиме. Пожалуйста, дайте мне знать, если мне нужно предоставить дополнительную информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...