postgresql创建加密函数

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

加密函数

创建原理

-- 管理员登录创建,登录命令: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; 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
PG数据库中,要查询所有自定义函数,可以使用以下SQL语句: ```sql SELECT proname, proargnames, prosrc FROM pg_proc WHERE pronamespace = 'public'::regnamespace; ``` 这个查询语句会返回所有在"public"模式下定义的函数的名称、参数名称和函数体。你可以将这个查询语句作为一个SQL命令在PG数据库中执行,或者在PL/pgSQL函数中使用EXECUTE语句来执行这个查询并返回结果。 请注意,这个查询只会返回在"public"模式下定义的函数。如果你的自定义函数在其他模式下定义,你需要修改查询语句中的"public"为相应的模式名称。 \[1\]是一个关于在PG数据库中使用PL/pgSQL函数的问题的Stack Overflow链接,其中提供了一个示例函数的代码。 \[2\]是PG数据库的PL/pgSQL文档链接,其中提供了关于PL/pgSQL语言的详细描述。 \[3\]是一个关于在PG数据库创建用户的函数的示例代码。 #### 引用[.reference_title] - *1* *2* [PG - 自定义SQL函数](https://blog.csdn.net/charles_neil/article/details/116677591)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [PostgreSql | 数据库 |自定义函数的设计和实现](https://blog.csdn.net/alwaysbefine/article/details/130014577)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

student_chenhu

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

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

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

打赏作者

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

抵扣说明:

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

余额充值