В моем загрузочном приложении 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.
Я хотел бы знать, есть ли способ обойти это.
Я промежуточный в весеннем ботинке и новичок в спящем режиме. Пожалуйста, дайте мне знать, если мне нужно предоставить дополнительную информацию.