Hibernate 在postgres中插入加密数据

Hibernate 在postgres中插入加密数据,hibernate,postgresql,Hibernate,Postgresql,在我们的数据库中,信用卡号是加密的,为了将加密的数据存储在postgresql数据库中,我们按照以下方式进行操作 \set pubkey '''' `sed -e "s/'/''/g" -e 's/\\n/\\r\\n/g' -e 's/\\/\\\\/g' < /home/vinit/fnpub.key` '''' \set pvtkey '''' `sed -e "s/'/''/g" -e 's/\\n/\\r\\n/g' -e 's/\\/\\\\/g' <

在我们的数据库中,信用卡号是加密的,为了将加密的数据存储在postgresql数据库中,我们按照以下方式进行操作

\set pubkey '''' `sed -e "s/'/''/g"  -e 's/\\n/\\r\\n/g'  -e  's/\\/\\\\/g' < /home/vinit/fnpub.key` '''' 

 \set pvtkey '''' `sed -e "s/'/''/g"  -e 's/\\n/\\r\\n/g'  -e  's/\\/\\\\/g' < /home/vinit/fnpvt.key` '''' 

select pgp_pub_decrypt(number, dearmor(:pvtkey),'testypassword' ) from payment_detail limit 2; 
\set pubkey''''sed-e“s/'/'/g'-e's/\\n/\\r\\n/g'-e's/\\\/\\\\\/g'
应用程序正在使用hibernate,如何使用hibernate插入加密数据和读取解密数据


谢谢

首先,我认为您的密钥管理还有很多不足之处。您将在密钥管理方面遇到很多问题。请先阅读克雷格对我的回答:

在这种情况下,您可能应该将用户密钥存储在数据库中的某个位置,由密码短语保护,然后使用这些密钥加密信用卡号的对称密钥。然后,您可以使用公钥加密这些密钥,以确保只有授权用户才能访问它们。事实上,你必须把钥匙存放在某个地方

现在在我的应用程序中,我们希望只有两三个人可以访问,每个人都可以访问所有密码。因此,加密密码的查询如下所示:

SELECT pgp_sym_encrypt($1, -- new password
                  pgp_pub_decrypt(last_resort_key,
                                  pgp_sym_decrypt_bytea(priv_key, $2) -- current passphrase
                  ))
  FROM user_key
 WHERE login = session_user;
(此处使用libpq格式)。请注意,我们使用pg用户作为应用程序用户

一旦数据库中有了相关数据,就可以相对直接地编写sql查询了

需要注意的是,错误日志可能会泄露密钥,甚至更糟。您可能希望保留尽可能少的日志,并将它们保留尽可能少的时间