postgresql创建加密函数

该文介绍了如何在PostgreSQL数据库中使用pg_crypto扩展进行加密和解密操作。通过createextensionpgcrypto创建扩展,然后利用encrypt和decrypt函数配合encode和decode进行AES加密和解密,以及自定义的plpgsql函数jia_mi和jie_mi进行数据加解密。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

加密函数

创建原理

-- 管理员登录创建,登录命令:D:\myinstall\PostgreSQL\10\bin>psql -U postgres -d tjbzdb
create extension pgcrypto;
--encrypt 加密函数 参数1:加密数据 参数2:签名密钥 参数3:加密方式
--encode 编码函数
--加密
select encrypt('lisi', 'test1','aes')
--编码
select encode(encrypt('lisi', 'test1','aes'), 'hex')
--解码
select decode('64b02855a6a9bbcbd6f96b2d0f6be8e3','hex')

--解密
select convert_from(decrypt(decode('64b02855a6a9bbcbd6f96b2d0f6be8e3','hex'),'test1','aes'),'SQL_ASCII')
select convert_from(decrypt(encrypt('lisi', 'test1','aes'),'test1','aes'),'SQL_ASCII')

资料

函数:
解密:convert_from(decrypt(cast(字段  as bytea),cast(秘钥 as bytea),'aes'),'SQL_ASCII')
加密:encode(encrypt(cast(#{字段,jdbcType=VARCHAR} as bytea),cast('秘钥' as bytea),'aes'),'escape')

示例:
解密:convert_from(decrypt(cast( info.sell_cert_no  as bytea),cast('psbctjxykyx' as bytea),'aes'),'SQL_ASCII') as "sell_cert_no"
加密:encode(encrypt(cast(#{info.cardNum,jdbcType=VARCHAR} as bytea),cast('psbctjxykyx' as bytea),'aes'),'escape')

加密函数

create or replace function jia_mi (dataStr varchar,miYao varchar)
returns varchar as $$

	declare
	dataEncrypt varchar(255); --加密后数据
begin 	
	  select encode(encrypt(cast(dataStr as  bytea), cast(miYao as bytea),'aes'), 'hex')  into dataEncrypt;
		return dataEncrypt;
end;
$$ language plpgsql; 

解密函数

create or replace function jie_mi (dataStr varchar,miYao varchar)
returns varchar as $$

	declare
	dataDecrypt varchar(255); --加密后数据
begin 	
	 select convert_from(decrypt(cast(decode(dataStr,'hex') as bytea),cast(miYao as bytea),'aes'),'SQL_ASCII') into dataDecrypt;
		
		return dataDecrypt;
end;
$$ language plpgsql; 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小同志888

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值