3

postgreSQL データベースの area_code 列を 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;

または、復号化されたarea_codeを表示しようとしても

select pgp_sym_decrypt((select area_code from ci), 'Password') ;

機能する唯一のことは、単一のレコードを使用し、暗号化されたテキストを入力として直接フィードする場合です。

select pgp_sym_decrypt('aes.encrypted.string.given.as.input', 'Password') ;
4

1 に答える 1

8

暗号化されたデータは、テキスト列ではなく bytea 列に格納することになっています。テキストから bytea にキャストできる場合があります。

pgp_sym_decrypt(area_code::bytea,'Password')

更新時に縮退自己結合を行うのではなく、テーブルを直接更新しないのはなぜですか?

于 2014-10-30T17:57:05.520 に答える