我被迫将现有的数据库迁移到AWS RDS。RDS的最早版本的Postgres是v12,而以前的数据库运行在v9.6(带有pgcrypto v1.1
扩展)上。
我使用pg_dump
和pg_restore
移动了数据。有些数据是加密的,有些SQL函数使用rijndael_decrypt
来解密这些数据,但是这个函数在pgcrypto v1.3中不可用。(这是你能在RDS psql 12中获得的唯一版本的扩展).我可以用pgcrypto的decrypt
函数或其他方法解密数据吗?尝试了decrypt
函数的所有可用算法/模式/填充组合,尝试将键转换为bytea
或将其作为纯文本使用,但我得到的只是ERROR: decrypt error: Data not a multiple of block size
。
编辑:从数据库添加函数定义:
postgres=# select pg_get_functiondef(oid) from pg_proc where proname = 'rijndael_decrypt';
pg_get_functiondef
----------------------------------------------------------------------------------
CREATE OR REPLACE FUNCTION public.rijndael_decrypt(key text, input_text bytea) +
RETURNS text +
LANGUAGE c +
STRICT +
AS '/c_extensions/pg_rijndael/pg_rijndael', $function$rijndael_decrypt$function$+
字符串
1条答案
按热度按时间mnemlml81#
更改加密和解密方法以利用PostgreSQL 12的pgp_sym_decrypt,该方法在pgcrypto 1.3中可用。确保您的应用程序代码已进行了适当的调整,并测试修订后的函数。
试试这个
字符串
希望对你有帮助:)