公司内部的P2P平台由于监管,进行了一系列不合规项的整改。其中有一条就是要对数据库中一些比较敏感的信息进行加密,比如:手机,邮箱,身份证,银行卡之类的。解决方案是,在整个过程,查询的时候在java服务端进行解密,插入和更新的时候在java服务端进行加密。数据库端则存放加密后的信息。本来只需要考虑java服务端加解密后能保持一致即可,但是为了方便某些在数据库端进行运维的人能使用sql对已加密的信息进行处理。这里要求了java服务端加密的内容能够在数据库端进行解密。所以两边需要使用一样的算法。
首先,第一步就是在postgresql数据库端安装pgcrypto模块
postgres=# \c superp2b_test
You are now connected to database "superp2b_test" as user "enterprisedb".
superp2b_test=# create extension pgcrypto;
CREATE EXTENSION
superp2b_test=#
安装完后就可以使用postgresql数据库中的decrypt加密函数和encrypt解密函数了。
在网上找了java的AES加解密的工具类,进行加密,然后数据库端进行解密,报错。发现两边的加解密不一致。网上查了AES算法,才发现AES算法有多种加密模式&#x