sql - 使用 pgcrypto 加密整个列
问题描述
我需要使用 AES-256 密钥加密一些列,我查看了 pgcrypto 的官方文档。但是他们的例子让我很生气。
例如我有数据库看起来像这样。
id first_name last_name is_active
0 John last_name 1 True
1 David last_name 2 False
2 Vincent last_name 3 True
3 Dean last_name 5 False
我尝试过这样的事情:
UPDATE my_table SET first_name = ENCRYPT(user_name, 'my_encryption_key')
我需要加密 first_name 和 last_name 列。我该如何实施?
谢谢,qww
解决方案
将pgp_sym_XXX()
函数与armor()
或一起使用encode()
以获取 base-64:
update my_table
set first_name = armor(
pgp_sym_encrypt(first_name, 'your_key', 'cipher-algo=aes256')
),
last_name = armor(
pgp_sym_encrypt(last_name, 'your_key', 'cipher-algo=aes256')
);
AES-256 很慢,因此可能需要很长时间才能运行整个表。
解密:
select pgp_sym_decrypt(dearmor(last_name), 'your_key', 'cipher-algo=aes256')
from my_table;
推荐阅读
- javascript - 将 CSS 应用于 iFrame(或其他元素)之外的项目
- python - 如何在热图中添加第二个比例?
- python-3.x - 使用 selenium 等待直到在 python 中完成一些查询
- php - Wordpress Woocommerce 变体无法解决
- java - Thymeleaf Spring boot - 输入Localdate
- java - 使用 Chef 在 CentOS 上安装 Java JDK 1.8
- java - 动态 getter 方法创建
- swift - Swift:约束一个泛型参数以在更受约束的泛型函数中使用
- chef-infra - 使用 CHEF 将文件下载到特定路径
- awk - 使用 sed 或 awk 删除直到正则表达式的行