postgres服务之加密
数据中往往会出现一些敏感字段,例如电话,邮箱等,这时候有需求进行加密保存
目前可以实现的方式有两种
方式一:这种方法,aes的加密方法不支持aes-192,不支持aes-256
#使用encrypt加解密
#加密保存
insert into test2(username,email) values('liulm7',encrypt('liulm7@xxxxx.com','aa','aes-128')); postgres=# select * from test2 where username='liulm7';
username | email | phone | address
----------+--------------------------------------------------------------------+-------+---------
liulm7 | \x39162fadc179498413b75b69bc65c98d19e454a0c67bd644118ab9df3c7b49ef | |
(1 row) #解密查看
postgres=# select username,convert_from(decrypt(email::bytea,'aa'::bytea,'aes-128'),'utf8') as email from test2 where username='liulm7';
username | email
----------+-------------------
liulm7 | liulm7@xxxxx.com
(1 row)
方式二:
#使用pgp_sym_encrypt加密
insert into test2(username,email) values('pgp_sym',pgp_sym_encrypt('pgp@lenovo.com','abc','cipher-algo=aes256, compress-algo=2, compress-level=9'));
insert into test2(username,email) values('pgp_sym',pgp_sym_encrypt('pgppp@lenovo.com','abc','cipher-algo=aes256, compress-algo=2, compress-level=9'));
#解密查看
postgres=# select username,pgp_sym_decrypt(email::bytea,'abc') from test2 where username='pgp_sym';
username | pgp_sym_decrypt
----------+------------------
pgp_sym | pgp@lenovo.com
pgp_sym | pgppp@lenovo.com
(2 rows)
查看某个数据库下加载的所有函数和存储过程
select routine_name from information_schema.routines where routine_catalog = 'uat_updated' and routine_schema = 'public' order by routine_name;
说明:routine_catalog: DBname routine_schema: schema名称
查看某个函数的信息
uat_updated=# \df *pgp_sym_encrypt*
List of functions
Schema | Name | Result data type | Argument data types | Type
--------+-----------------------+------------------+---------------------+------
public | pgp_sym_encrypt | bytea | text, text | func
public | pgp_sym_encrypt | bytea | text, text, text | func
public | pgp_sym_encrypt_bytea | bytea | bytea, text | func
public | pgp_sym_encrypt_bytea | bytea | bytea, text, text | func
(4 rows)
查看已经安装或者内置的模块
uat_updated=# select * from pg_available_extensions where name ~ 'pgcrypto';
name | default_version | installed_version | comment
----------+-----------------+-------------------+-------------------------
pgcrypto | 1.3 | 1.3 | cryptographic functions
(1 row)
一个报错处理:
ERROR: function pgp_sym_encrypt(unknown, unknown, unknown) does not exist
LINE 1: insert into my_test values('pgp_sym',pgp_sym_encrypt('pgp@le...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
解决方式:
1 通过上面的命令查看是否已经安装这个模块,
2
uat_updated=# create extension pgcrypto;
CREATE EXTENSION
3 测试这个模块里面的一个函数
select encrypt('123456','aa','aes');
参数说明:
cipher-algo 加密算法
compress-algo 压缩类型,使用的压缩算法,取值 0,1(zip),2(zlib)
compress-level 压缩比,级别越高压缩比越大,速度也会更慢,压缩级别(0~9)
convert-crlf 是否在加密的时候将\n装换为\r\n,在解密的时候将\r\n转换为\n
disable-mdc 是否使用SHA1保护数据
sess-key 是否使用单独的会话密钥
s2k-mode 使用哪一种S2K算法
s2k-count 使用S2K的迭代次数
s2k-digest-algo 在s2k中使用哪种摘要算法
s2k-cipher-algo 要用哪种密码来加密独立的会话密钥
unicode-mode 是否将文本数据从数据库内部编码转为UTF-8并返回
postgres服务之加密的更多相关文章
- WebApi服务Uri加密及验证的两种方式
最近的一个项目要求服务端与UI层分离,业务层以WebApi方式向外提供所有业务服务,服务在数据保密性方面提出了要求,主要包括: 1:客户端认证: 2:服务请求超时(默认5分钟): 3:服务Get请求的 ...
- pgadmin4 csrf错误导致docker-compose postgres服务下线
docker-compse up 启动的前台服务, 过一会就自动停止 检查半天,发现是pgadmin4没安装正确不断报400 和 csrf error 然后pgadmin4为啥报这个, 因为pytho ...
- postgres服务相关语法
远程登陆 psql -h 主机 -U 用户 -p端口 -W -d 数据库 #-W表示密码,例如:psql -h 192.168.137.3 -U postgres -p 5432 -W -d post ...
- postgres服务安装,启动和配置
安装以及启动 yum install readline-devel tar xf postgresql-11.1.tar.gz cd postgresql-11.1 ./configure --pre ...
- Self Host WebApi服务传输层SSL加密(服务器端+客户端调用)
接上篇<WebApi服务URI加密及验证的两种方式>,在实际开发中,仅对URI进行加密是不够的,在传输层采用SSL加密也是必须的. 如果服务寄宿于IIS,那对传输层加密非常简单仅需要配置一 ...
- [Kong 与 Konga与postgres数据库] 之 Kuberneres 部署
1.Kong的概述 Kong是一个clould-native.快速的.可扩展的.分布式的微服务抽象层(也称为API网关.API中间件或在某些情况下称为服务网格)框架.Kong作为开源项目在2015年推 ...
- [Kong 与 Konga 与 Postgres数据库] 之 Kuberneres 部署
1.Kong的概述 Kong是一个clould-native.快速的.可扩展的.分布式的微服务抽象层(也称为API网关.API中间件或在某些情况下称为服务网格)框架.Kong作为开源项目在2015年推 ...
- 微服务和SOA服务
微服务和SOA都被认为是基于服务的架构,这意味着这两种架构模式都非常强调将“服务”作为其架构中的首要组件,用于实现各种功能(包括业务层面和非业务层面).微服务和SOA是两种差异很大的架构模式,但是他们 ...
- SQL2012数据库加密方法
1.非对称密钥来保护新的对称密钥 /*--测试环境 Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64) Oct 19 2012 13:38:57 C ...
随机推荐
- 基于dokcer的zoookeeper集群安装
编写docker-compose.ymlversion: '3.1' services: zoo1: image: zookeeper restart: always hostname: zoo1 p ...
- 【leetcode】892. Surface Area of 3D Shapes
题目如下: 解题思路:对于v = grid[i][j],其表面积为s = 2 + v*4 .接下来只要在判断其相邻四个方向有没有放置立方体,有的话减去重合的面积即可. 代码如下: class Solu ...
- Vue-cli 项目设置每个页面标题
页面标题 在vue-router页面配置中添加meta的title信息,配合vue-router的beforeEach注册一个前置守卫用户获取到页面配置的title const title = '移动 ...
- docker Error response from daemon
docker 在拉取镜像的时候报错 Using default tag: latest Error response from daemon: Get https://registry-1.docke ...
- 使用IDEA进行commit合并(折叠)
当前有,test1,test2两个commit,想把这两个分支合成一个commit去提交代码 将T1C修改的代码,与T2C修改的代码合并,合成一个commit作为提交 这样二个commit就合并成一个 ...
- Python爬虫之抓取豆瓣影评数据
脚本功能: 1.访问豆瓣最受欢迎影评页面(http://movie.douban.com/review/best/?start=0),抓取所有影评数据中的标题.作者.影片以及影评信息 2.将抓取的信息 ...
- 跨域共享cookie
1. JSP中Cookie的读写 Cookie的本质是一个键值对,当浏览器访问web服务器的时候写入在客户端机器上,里面记录一些信息.Cookie还有一些附加信息,比如域名.有效时间.注释等等. 下面 ...
- 【Elasticsearch】清空指定index/type下的数据
1.postman请求接口 http://ip:端口/index/type/_delete_by_query?conflicts=proceed body为: { "query": ...
- 9.26-mkdir,tree,touch命令
mkdir -- 创建文件 [root@wen data]# mkdir --help 用法:mkdir [选项]... 目录... 若指定目录不存在则创建目录. 长选项必须使用的参数对于短选项时也是 ...
- [CSP-S模拟测试]:施工(DP+单调栈+前缀和)
题目描述 小$Y$家门前有一条街道,街道上顺序排列着$n$幢建筑,其中左起第$i$幢建筑的高度为$h_i$.小$Y$定义街道的不美观度为所有相邻建筑高度差的绝对值之和乘上常数$c$,为了改善街道环境, ...