Tôi đang cố gắng mã hóa một cột trong DB prostrgres của tôi. Tên cột là "kiểm tra" loại "bytea".Làm thế nào để mã hóa một cột trong Postgres bằng cách sử dụng Hibernate @ColumnTransformer
đang enity của tôi là dưới đây,
@ColumnTransformer(
forColumn="test",
read="pgp_sym_encrypt(test::bytea, 'mySecretKey')",
write="pgp_sym_decrypt(?, 'mySecretKey')")
private String test;
Khi tôi cố gắng lấy lại tổ chức nào, tôi nhận được các dữ liệu được mã hóa như dưới đây. Làm thế nào để tôi có được giá trị giải mã được lập trình? Nhưng tôi nhận được giá trị thực tế Nếu tôi thực hiện một truy vấn chọn postgres.
"test": "\\xc30d04070302474627ea0994ea657bd24401aaa5543862d57524a407e5dbe2ee0f6f0f33ea4f4474f5bc801dca5d32956d41a975505b12ac000f124177bdc2f4507cbfd724d716aaa513ba46f004dfefd3b2b32eb6"
- Khi tôi đang cố gắng để tồn tại đơn vị, tôi nhận được báo lỗi dưới đây.
ERROR: column "test" is of type bytea but expression is of type character varying
Tôi nghĩ bạn đã đặt các cuộc gọi hàm của mình một cách nghịch ngợm. Bạn nên sử dụng một cái gì đó như 'read =" pgp_sym_decrypt (test, '') ", write =" pgp_sym_encrypt (?, '') "'. (Bởi vì nó được mã hóa trong DB & bạn muốn giải mã trong ứng dụng của bạn). –
pozs
Nhưng tôi không chắc liệu đó có phải là nơi thích hợp để nhúng khóa của bạn hay không. – pozs