Итак, у меня есть две таблицы: таблица Patient
с идентификатором patient_id
и другая таблица medical_file
со столбцом patient
, patien_id
, зашифрованная методом AES (не внешний ключ). Я использую Hibernate для ORM, в объекте MedicalFile Я использую шифрование AES для шифрования patient
в методе установки setPatient
и расшифровку в методе получения getPatient
расшифровать значение, извлеченное из базы данных. Код:
@Entity
@Table(name = "patient", schema = "public")
public class Patient extends BaseEntity{
@Id
@GeneratedValue(generator = "UUID")
@GenericGenerator(name = "UUID", strategy = "org.hibernate.id.UUIDGenerator")
@Column(name = "id", updatable = false, nullable = false)
private UUID id;
//....
}
@Entity
@Table(name = "medical_file", schema = "public")
public class MedicalFile extends BaseEntity {
@Column(name = "patient")
private String patient;
//...
public void setPatient(String patient) {
AES256TextEncryptor textEncryptor = new AES256TextEncryptor();
textEncryptor.setPassword("key");
this.patient = textEncryptor.encrypt(patient);
}
public String getPatient() {
AES256TextEncryptor textEncryptor = new AES256TextEncryptor();
textEncryptor.setPassword("key");
return textEncryptor.decrypt(patient);
}
}
Поэтому, когда я хочу сохранить таблицу medical_file
, я должен зашифровать столбец patient
, а когда я хочу получить medical_file
пациента, я имею расшифруйте столбец patient
в таблице «medical_file».
Проблема в том, что шифрование AES для patient
с одним и тем же ключом каждый раз отличается, поэтому, когда у меня есть patient_id
(то же самое, что и patient
в medical_file
таблице, но не в зашифрованном виде, и я хочу зашифровать, чтобы получить таблицу patient
из medical_file
. Я получил другое значение, которое не существует в таблице medical_file
.
Есть предложения по решению этой проблемы?