Как расшифровать зашифрованный столбец методом AES? - PullRequest
0 голосов
/ 13 января 2020

Итак, у меня есть две таблицы: таблица 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 .

Есть предложения по решению этой проблемы?

1 Ответ

0 голосов
/ 13 января 2020

Если я правильно понял, вы пытаетесь сделать следующее:

вы храните зашифрованные данные AES в таблице и затем хотите получить их снова на основе зашифрованных данных, но проблема заключается в том, что каждое шифрование AES генерирует различное значение, и вы не можете возражать против совпадения в БД.

Что я предложу, чтобы добавить столбец MD5 га sh вместе с другими AES зашифрованными данными. MD5 является необратимым , но он будет генерировать одинаковое значение для одного и того же ввода каждый раз (это то, что в основном используется для хранения паролей). Поэтому в следующий раз, когда вы захотите выполнить поиск, создайте MD5 га sh вашего ввода, найдите его в БД, а затем расшифруйте остальные данные, используя расшифровку AES .

Дайте мне знать, если это полезно . Игнорировать мои ответы, если я сделал не правильно решить вашу проблему.

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