pgp_sym_encrypt и расшифровывает весь столбец в postgresql
Я хотел бы зашифровать столбец area_code в моей базе данных postgreSQL с шифрованием aes 256. Вот что происходит.. Я могу легко зашифровать его, но не могу расшифровать.
Вот запрос шифрования, который отлично работает:
update mytable t1 set area_code = t2.area_code from (select pgp_sym_encrypt(area_code,'Password', 'compress-algo=1, cipher-algo=aes256') as area_code,area_name from mytable) t2 where t1.area_name = t2.area_name;
Однако, кажется, что запрос расшифровки не работает, если я дам что-то вроде
update mytable t1 set area_code = t2.area_code from (select pgp_sym_decrypt(area_code,'Password') as area_code,area_name from mytable) t2 where t1.area_name = t2.area_name;
или даже когда я пытаюсь просмотреть расшифрованный код области
select pgp_sym_decrypt((select area_code from ci), 'Password') ;
Единственное, что работает, это когда я использую одну запись и передаю зашифрованный текст непосредственно в качестве ввода.
select pgp_sym_decrypt('aes.encrypted.string.given.as.input', 'Password') ;
Может ли кто-нибудь дать мне информацию о том, как расшифровать весь столбец в таблице!
Спасибо:)
1 ответ
Вы должны хранить зашифрованные данные в столбце bytea, а не в текстовом столбце. Возможно, вы сможете преобразовать его в bytea из текста:
pgp_sym_decrypt(area_code::bytea,'Password')
Почему бы вам не обновить таблицу напрямую, а не выполнить вырожденное самостоятельное соединение при обновлении?