Как зашифровать столбец в Postgres с помощью Hibernate @ColumnTransformer
Я пытаюсь зашифровать столбец в моей БД prostrgres. Имя столбца - "тест" типа "bytea".
мой код enity ниже,
@ColumnTransformer(
forColumn="test",
read="pgp_sym_encrypt(test::bytea, 'mySecretKey')",
write="pgp_sym_decrypt(?, 'mySecretKey')")
private String test;
когда я попытался получить сущность, я получаю зашифрованные данные, как показано ниже. Как получить расшифрованное значение программным способом? Но я получаю фактическое значение, если выполняю запрос postgres select.
"test": "xc30d04070302474627ea0994ea657bd24401aaa5543862d57524a407e5dbe2ee0f6f0f33ea4f4474f5bc801dca5d32956d41a975505b12ac000f124177bdc2f4507cbfd724d716aaa513ba46f004dfefd3b2b32eb6"
- когда я пытаюсь сохранить сущность, я получаю следующее ошибка.
ошибка: столбец "test" имеет тип bytea, но выражение имеет тип характер меняется
1 ответов
вам нужно использовать pgp_sym_encrypt
для записи и pgp_sym_decrypt
для чтения. Ты поступил наоборот.
@ColumnTransformer(
forColumn="test",
read="pgp_sym_decrypt(test::bytea, 'mySecretKey')",
write="pgp_sym_encrypt(?, 'mySecretKey')")
private String test;
на самом деле, мне так понравился ваш вопрос, что я даже написал об этом статью. The пример находится на GitHub и работает как шарм.