当前公司数据平台使用的处理架构,由Hive进行大数据处理,然后将应用数据同步到PostgreSQL中做各类外围应用。由于部分数据涉及敏感信息,必须在Hive进行加密,然后在PG使用时再进行单个数据解密,并监控应用的数据调用事情。因此需要实现Hive加密到PostgreSQL解密还原的过程。在不编写UDF的情况下,有以下方法。
HIVE加密
sql
select
base64(aes_encrypt(敏感用户名, 'Asxdc67890gt5rf3')) 加密后用户名
from table_name
关键点解析
密码长度必须是128、192、256个字节
没有各种参数来控制加密过程
PG解密
sql
select
convert_from(decrypt(decode(加密后用户名,'base64'),'Asxdc67890gt5rf3','aes-ecb/pad:pkcs'),'utf8') 解密用户名
from table_name
关键参数解析
algorithm是下列之一:
bf --- Blowfish
aes --- AES (Rijndael-128, -192 或 -256)
mode是下列之一:
cbc --- 下一个块依赖前一个(默认)
ecb --- 每一个块被独立加密(只用于测试)
padding是下列之一:
pkcs --- 数据可以是任意长度(默认)
none --- 数据必须是密码块尺寸的倍数
参考资料:
Hive函数aes_encrypt、 aes_decrypt详细说明页面
[HIVE-11593] Add aes_encrypt and aes_decrypt UDFs - ASF JIRA
PostgreSQL加解密模块pgcrypto详细说明页面