优秀网站建设宝塔部署wordpress
- 作者: 五速梦信息网
- 时间: 2026年04月20日 06:56
当前位置: 首页 > news >正文
优秀网站建设,宝塔部署wordpress,代做机械设计的网站,中国万网网站建设过程目录 一、pgcrypto 简介1.1 安装 pgcrypto 扩展1.2 pgcrypto 包含的函数 二、用法①#xff1a;对称加密#xff08;使用 AES、Blowfish 算法#xff09;2.1 密钥2.2 密钥偏移量 三、用法②#xff1a;PGP加解密3.1 什么是PGP算法#xff1f;3.2 使用 GPG 生成密钥对3.3 列… 目录 一、pgcrypto 简介1.1 安装 pgcrypto 扩展1.2 pgcrypto 包含的函数 二、用法①对称加密使用 AES、Blowfish 算法2.1 密钥2.2 密钥偏移量 三、用法②PGP加解密3.1 什么是PGP算法3.2 使用 GPG 生成密钥对3.3 列举密钥对3.4 导出公钥、私钥3.5 使用 pgcrypto 进行 PGP 加解密 四、自定义存储过程4.1 AES 加密的存储过程4.2 AES 解密的存储过程 五、补充5.1 报错Postgresql Error: Corrupt ascii-armor5.2 在线生成 PGP 密钥对网址推荐 背景 在我们的日常开发中对安全级别要求较高的项目对敏感数据都要求加密保存。在 PostgreSQL 中可以使用 pgcrypto 扩展来实现 AES 和 RSA 加密下面我们来介绍一下详细的步骤和方法。 pgcrypto官方文档 https://www.postgresql.org/docs/13/pgcrypto.htmlpgcrypto中文文档 http://www.postgres.cn/docs/13/pgcrypto.html
一、pgcrypto 简介
1.1 安装 pgcrypto 扩展
首先需要确保 pgcrypto 扩展已安装。可以使用以下命令在数据库中安装
CREATE EXTENSION pgcrypto;1.2 pgcrypto 包含的函数
function armor(data bytea) returns text
function armor(data bytea, keys text[], values text[]) returns text
function crc32
function crypt(password text, salt text) returns text
function date_format
function dearmor(data text) returns bytea
function decrypt(data bytea, key bytea, type text) returns bytea
function decrypt_iv(data bytea, key bytea, iv bytea, type text) returns bytea
function digest(data text, type text) returns bytea
function digest(data bytea, type text) returns bytea
function encrypt(data bytea, key bytea, type text) returns bytea
function encrypt_iv(data bytea, key bytea, iv bytea, type text) returns bytea
function gen_random_bytes(count integer) returns bytea
function gen_random_uuid() returns uuid
function gen_salt(type text) returns text
function gen_salt(type text, iter_count integer) returns text
function generate_19bit_timestamp_key
function hmac(data text, key text, type text) returns bytea
function hmac(data bytea, key bytea, type text) returns bytea
function if
function ifnull
function int2interval
function pgp_armor_headers(data text, key out text, value out text) returns setof record
function pgp_key_id(bytea) returns text
function pgp_pub_decrypt(msg bytea, key bytea) returns text
function pgp_pub_decrypt(msg bytea, key bytea, psw text) returns text
function pgp_pub_decrypt(msg bytea, key bytea, psw text, options text) returns text
function pgp_pub_decrypt_bytea(msg bytea, key bytea) returns bytea
function pgp_pub_decrypt_bytea(msg bytea, key bytea, psw text) returns bytea
function pgp_pub_decrypt_bytea(msg bytea, key bytea, psw text, options text) returns bytea
function pgp_pub_encrypt(data text, key bytea) returns bytea
function pgp_pub_encrypt(data text, key bytea, options text) returns bytea
function pgp_pub_encrypt_bytea(data bytea, key bytea) returns bytea
function pgp_pub_encrypt_bytea(data bytea, key bytea, options text) returns bytea
function pgp_sym_decrypt(msg bytea, psw text) returns text
function pgp_sym_decrypt(msg bytea, psw text, options text) returns text
function pgp_sym_decrypt_bytea(msg bytea, psw text) returns bytea
function pgp_sym_decrypt_bytea(msg bytea, psw text, options text) returns bytea
function pgp_sym_encrypt(data text, psw text) returns bytea
function pgp_sym_encrypt(data text, psw text, options text) returns bytea
function pgp_sym_encrypt_bytea(data bytea, psw text) returns bytea
function pgp_sym_encrypt_bytea(data bytea, psw text, options text) returns bytea
function str_to_date
function update_triggers_t_open_contract_event二、用法①对称加密使用 AES、Blowfish 算法
2.1 密钥
使用 pgcrypto 扩展进行对称加密AES的示例SQL如下
– 加密密钥
SELECT encrypt(Hello World, y_secret_key, aes);
– 解密密钥
SELECT decrypt(encrypt(Hello World, y_secret_key, aes), y_secret_key, aes);– 补充16进制转换
SELECT decode(encode(Hello World, hex), hex);
– 补充Base64转换
SELECT decode(encode(Hello World, base64), base64);执行结果 y_secret_key定制密钥用于加解密。 encrypt(加密内容, 密钥, 加密算法)加密函数返回密文内容。 decrypt(加密内容, 密钥, 加密算法)解密函数返回明文内容。 aes加密算法语法为 algorithm[-mode][/pad:padding]其中变量可选值如下 algorithm bf – Blowfishaes – AES (Rijndael-128, -192 或 -256) mode cbc – 下一个块依赖前一个默认ecb – 每一个块被独立加密只用于测试 padding pkcs – 数据可以是任意长度默认none – 数据必须是密码块尺寸的倍数
因此例如下面这两个用例是等效的
encrypt(data, fooz, aes)
encrypt(data, fooz, aes-cbc/pad:pkcs)2.2 密钥偏移量
AES 加解密一般使用的是 密钥 偏移量 的方式来进行加解密的使用 pgcrypto 扩展的实现方式如下
– 加密密钥偏移量
SELECT encrypt_iv(Hello World, y_secret_key, y_secret_iv, aes);
– 加密 字节转16进制8cf41e62e0319d19cb6cc515ca453ba8
SELECT encode(encrypt_iv(Hello World, y_secret_key, y_secret_iv, aes), hex);
– 加密 字节转16进制 转大写8CF41E62E0319D19CB6CC515CA453BA8
SELECT upper(encode(encrypt_iv(Hello World, y_secret_key, y_secret_iv, aes), hex));– 解密密钥偏移量
SELECT decrypt_iv(encrypt_iv(Hello World, y_secret_key, y_secret_iv, aes), y_secret_key, y_secret_iv, aes);
– 16进制转字节不区分大小写 解密
SELECT decrypt_iv(decode(8CF41E62E0319D19CB6CC515CA453BA8, hex), y_secret_key, y_secret_iv, aes);执行结果 三、用法②PGP加解密
3.1 什么是PGP算法
PGPPretty Good Privacy 是一种 用于数据加密和解密 的技术于 1991 年开发。
PGP 使用 混合加密技术结合了对称加密和非对称加密的优点提供了一种高效且安全的数据加密解决方案。
3.2 使用 GPG 生成密钥对
GPGGNU Privacy Guard 是 GNU 项目的一部分他是 PGP 的一个开源实现。
大部分 Linux 系统包括 Git Bash中都默认集成了 GPG 工具。 注意 大家不要搞混了GPG 是用于实现 PGP 的一个开源工具。 我们可以使用 GPG 工具生成密钥对命令如下所示
生成密钥对注意Real name 要求不能是数字开头长度不能小于5位
gpg –gen-key执行结果 从下图可以看到执行命令之后需要输入很多信息用于生成密钥对。 3.3 列举密钥对 使用 GPG 工具列举密钥对的命令如下
列举密钥对这里的 KEYID 就是前面的 Real name
gpg -a –export KEYID public.key执行结果 可以看到成功列举出来我们刚才生成的密钥对。 3.4 导出公钥、私钥 以 ASCII-armored 格式导出一个公钥命令如下
导出公钥这里的 KEYID 就是前面的 Real name
gpg -a –export KEYID public.key
查看公钥
cat public.key以 ASCII-armored 格式导出一个私钥命令如下
导出私钥这里的 KEYID 就是前面的 Real name
gpg -a –export-secret-keys KEYID secret.key
查看私钥
cat secret.key注意 在把这些密钥交给 PGP 函数之前你需要对它们使用 dearmor()。或者如果你能处理二进制数据你可以从命令中去掉 -a。 3.5 使用 pgcrypto 进行 PGP 加解密 在 PGSQL 中我们可以使用 pgcrypto 扩展来实现 PGP 加密命令如下
加密公钥加密
select pgp_pub_encrypt(Hello, dearmor(公钥));
加密 字节转16进制
select encode(pgp_pub_encrypt(Hello, dearmor(公钥)), hex);# 解密私钥解密 select pgp_pub_decrypt(密文), dearmor(私钥));
16进制转字节 解密
select pgp_pub_decrypt(decode(密文, hex), dearmor(私钥));dearmor()与之配对的是 armor() 函数。armor() 和 dearmor() 函数把二进制数据 包装 / 解包 成 PGP ASCII-armor 格式。这种格式基本上是带有 CRC 和额外格式化的 Base64。 补充代码中的 密文、 公钥 和 私钥 需要调整为具体的值由于密钥篇幅较长单独在下面提供了密钥对Demo。 公钥Demo —–BEGIN PGP PUBLIC KEY BLOCK—–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 yzbUTOI uyyu —–END PGP PUBLIC KEY BLOCK—–私钥Demo —–BEGIN PGP PRIVATE KEY BLOCK—–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 cqYOkuCLFEmFo7kQKeFX3/gOwdYss21Ezi uW6i —–END PGP PRIVATE KEY BLOCK—–四、自定义存储过程 这里我们以 AES 加密方式举例。 4.1 AES 加密的存储过程 SQL如下 CREATE OR REPLACE FUNCTION aes_encrypt(intext character varying)RETURNS textLANGUAGE plpgsql AS \(function\)BEGINRETURN upper(encode(encrypt_iv(intext::bytea, key_111, iv_222, aes), hex))::text;END; \(function\) ;执行结果 4.2 AES 解密的存储过程 SQL如下 CREATE OR REPLACE FUNCTION aes_decrypt(intext text)RETURNS textLANGUAGE plpgsql AS \(function\)BEGINRETURN encode(decrypt_iv(decode(intext, hex), key_111, iv_222, aes), escape);END; \(function\) ;escape 编码格式主要用于将二进制数据转换为可以在文本环境中安全传输和存储的形式。例如在 SQL 查询中嵌入二进制数据时使用 escape 编码可以避免特殊字符引起的问题。 执行结果 五、补充 5.1 报错Postgresql Error: Corrupt ascii-armor 如果出现报错 Postgresql Error: Corrupt ascii-armor则说明密钥格式错误建议采用标准的 PGP 密钥对。 5.2 在线生成 PGP 密钥对网址推荐 网址 https://www.jashtool.com/generate/pgp-key 整理完毕完结撒花~ 参考地址 1.PostgreSQL 如何有效地处理数据的加密和解密https://blog.csdn.net/sdasdas12/article/details/140268016 2.GnuPG用法https://blog.csdn.net/weixin_45895555/article/details/109906607
- 上一篇: 优秀设计网站做企业网站要用什么软件
- 下一篇: 优秀网站建设哪家好seo网络营销教程
相关文章
-
优秀设计网站做企业网站要用什么软件
优秀设计网站做企业网站要用什么软件
- 技术栈
- 2026年04月20日
-
优秀企业网站欣赏猎上网登陆官方网站
优秀企业网站欣赏猎上网登陆官方网站
- 技术栈
- 2026年04月20日
-
优秀企业网站欣赏开封做网站公司汉狮
优秀企业网站欣赏开封做网站公司汉狮
- 技术栈
- 2026年04月20日
-
优秀网站建设哪家好seo网络营销教程
优秀网站建设哪家好seo网络营销教程
- 技术栈
- 2026年04月20日
-
优秀网站建设网页网站负责人核验照
优秀网站建设网页网站负责人核验照
- 技术栈
- 2026年04月20日
-
优秀网站设计案例分析ppt金华做网站最专业的公司
优秀网站设计案例分析ppt金华做网站最专业的公司
- 技术栈
- 2026年04月20日
