前言
在pgsql数据库中安装pljava插件,通过调用sm4 jar工具包实现sql sm4加解密。
一、安装pgsql以及pljava插件
使用postgresql-pljava-docker 部署pgsql 11.4版本数据以安装pljava插件。
docker run -d -p 5432:5432 -e POSTGRES_PASSWORD=password beargiles/pljava
二、上传sm4工具包
将sm4工具包上传plsql docker中
docker cp D:\project\java\SM4Utils\target\security-1.0-SNAPSHOT.jar 0fe28b54a9dd:/
三、pgsql数据库中配置冰创建解密函数
–授权
grant USAGE on LANGUAGE java to postgres;
–安装jar
select sqlj.install_jar('file:///security-1.0-SNAPSHOT.jar', 'SM4', true);
--select sqlj.replace_jar('file:///security-1.0-SNAPSHOT.jar', 'SM4', true);
--select sqlj.remove_jar('SM4', true);
–给schema添加classpath
SELECT sqlj.set_classpath( 'public', 'SM4' );
–创建函数
CREATE or replace FUNCTION sm4_decode( varchar, varchar ) RETURNS CHAR AS
'com.wonders.utils.security.SM4Utils.strDecode'
LANGUAGE java;
–使用
select sm4_decode('Pta8aen81PnXLAFHEbLXIw==','T_VAC_BASIC_CHILDREN');
总结
pgsql使用pljava调用jar包中方法,难点在于pljava编译安装。
pljava最好在linux环境中编译,如果在windows环境编译需要修改include\postgresql\server\c.h中#include <strings.h>等等,并在windows环境中安装openssl。。。。。
所以本文直接选择postgresql-pljava-docker,使用docker部署。