问题标签 [pgcrypto]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1263 浏览

java - POSTRGESQL 中的 AES 加密

pgcrypto我在-中使用了一个函数encrypt('id','TheBestSecretKey','aes')来加密 . 中的字段postgresql(Pg admin tool)。该字段已加密,输出为 bytea 格式,例如:\234u\321\036\027\317O\371\020bb\342\334x)\236。在 java 中使用 aes(使用 javax.crypto 库)加密时相同的数据给了我字符串输出为 : œuÑÏOùbbâÜx)ž。我有一个要求,我需要在我的 java 程序中比较这两个值。我如何比较这两个领域。

0 投票
2 回答
974 浏览

postgresql - 使用 Postgres PGCrypto 加密需要超级用户来运行视图查询

使用:Postgres 9、CentOS 7、Postgres 数据目录不在默认位置,但使用 RSync 确保权限正确。是的,适当的 .config 文件已更改。

当我尝试以非超级用户 (Testuser) 身份查询包含加密项目的视图时,我收到此错误:

错误:必须是超级用户才能读取文件上下文:PL/pgSQL 函数 decrypt_data(bytea) line 13 at assignment

如果我使用 POSTGRES 超级用户运行相同的查询,则查询可以正常完成。

尝试读取密钥文件时,这似乎是文件系统读取权限错误。我看到的所有使用加密的东西似乎都没有提到如何在没有超级用户的情况下运行。

我已经为 Testuser 运行了以下授权:

测试用户可以创建表、视图,基本上是该数据库中的任何内容。只是不读取加密密钥。

密钥的权限现在是 775,我什至尝试了 777 没有运气。

有任何想法吗?

0 投票
0 回答
1690 浏览

django - django-pgcrypto:AttributeError:模块'django.db.models'没有属性'SubfieldBase'

我正在尝试将 django-pgcrypto 添加到我的 django 项目中,但我收到一条错误消息:

你对如何解决这个问题有什么建议吗?我正在使用 django 1.10 和 python 3.5

0 投票
0 回答
336 浏览

postgresql - 在 Postgresql 中加密

我对此有疑问:

结果:

扩展 pgcrypto 已经安装。

谢谢!

0 投票
1 回答
914 浏览

c# - 解密由 pgcrypto 加密的数据(在 C# 中)

我正在尝试解密使用 pgcrypto 加密的数据。我没有使用 IV,因为它只是一个测试,但我无法在 C# 中解密数据。

PostGres中的加密:

在 C# 中解密:

我从其中一行复制了生成的加密数据和二进制密钥,但 C# 代码不断出现 CryptographicException(“填充无效且无法删除”)异常。我的理解是 pgcrypto 的 encrypt() 默认为 cbc\pkcs。显然,我错过了一些东西。

感激地收到任何帮助。

亚当。

0 投票
1 回答
6723 浏览

postgresql - PostgreSQL:使用 pgcrypto 加密列

我需要加密 PostgreSQL 9.6 数据库中的一些列。被加密的数据本质上是敏感的;但是,这些数据不是密码或其他身份验证凭据。这些数据需要解密以供用户进行统计分析和消费。

在阅读了几个问题和答案后:

...并考虑这些评论:

在此处输入图像描述

...似乎使用 pgcrypto 模块的最大问题是在同一个数据库中存储密钥。

这就引出了一个问题:

将密钥存储在不同的数据库中并通过外部数据包装器(例如 Postgresql_FDW)访问它是否符合最佳实践?

0 投票
1 回答
2537 浏览

php - 无法使用来自 AES-256-CBC 的 pgcrypto 解密,但 AES-128-CBC 可以

我在解密之前在 PHP 应用程序中加密的 pgcrypto 中的数据时遇到问题。

我尝试了 3 种加密类型:
1) mcrypt - RIJNDAEL 128 CBC
2) mcrypt - RIJNDAEL 256 CBC
3) openssl_encrypt - aes-256-cbc

一切都在 PHP 中加密解密很好,但在 pgcrypto 我可以使用相同的密钥解密,并且仅 iv 1)mcrypt - RIJNDAEL 128 CBC

这是 PHP 部分的示例代码:

用于编码的结果和数据:

1) mcrypt - RIJNDAEL 128 CBC

  • 键=“67pma7BQL01cqb6Nlil2T1436lLXv8Ln”
  • 初始化向量 base64 = "q5gXIfW6maT4zx4tgJQImg=="
  • 加密字符串 base64 = "q5gXIfW6maT4zx4tgJQImtwJgEVK66mTcRPdilkEiHY="
  • 解密字符串 base64 = "dGVzdA=="

2) mcrypt - RIJNDAEL 256 CBC

  • 键=“85f2669023b98a62d1312af75994ddf1”
  • 初始化向量 base64 = "2EmtyH++cQA5X5mmtY+vpl5FkVwELS9ExrYnFjGGco0="
  • 加密字符串 base64 = "2EmtyH++cQA5X5mmtY+vpl5FkVwELS9ExrYnFjGGco3B29CC5DpfWs1YAfh8WuY9f0/6OPC1B4sidSV5TojJ1g=="
  • 解密字符串 base64 = "dGVzdAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAA="

3) openssl_encrypt - aes-256-cbc

  • 键=“85f2669023b98a62d1312af75994ddf1”
  • 初始化向量 base64 = "tOi+xXZf6MyPDpQzPZAI6Q=="
  • 加密字符串 base64 = "tOi+xXZf6MyPDpQzPZAI6XJQYmwyNUVzKzdaVnNickc5dEg5MUd1anpBYlpLeW9SQjhpZ29yQzRpWFk9"
  • 解密字符串base64=“dGVzdA==”

在这里,我如何尝试使用相同的密钥和 IV 在 Postgres 中解密这些数据。

正如您在 PHP 中看到的所有 3 个已解密 OK。 在 Postgres 中,只有第一个(mcrypt aes128cbc)解密 OK - 前 16 个字节仍然是 IV,但我可以删除它们并转换为文本。另外两个(mcrypte AES256CBC 和 openssl256cbc)看起来甚至不像被解密了。我用 openssl256cbc 注释了块,因为它给了我“[39000] 错误:decrypt_iv 错误:数据不是块大小的倍数”错误。

任何帮助将不胜感激。

0 投票
1 回答
4906 浏览

java - 在 Java 中加密和在 Postgres 中解密(使用 pgcrypto 模块)

我正在使用以下代码在 Java 中加密和解密,它似乎工作正常:

但是当我尝试在 postgres 中解密生成的加密数据时,出现错误:

错误:decrypt_iv 错误:数据不是块大小的倍数

0 投票
1 回答
1052 浏览

django - 我应该加密 CloudSQL 数据库中的数据吗?

谷歌CloudSQL 文档指出,数据在传输和静止时都是加密的。

我在 Django 应用程序中使用 pgcrypto 来加密敏感信息。但是我想知道这样做是否有任何意义,因为它已经在静止时加密了。我唯一能想象的是,带有已部署代码的 Google App Engine 服务器遭到破坏,并且数据库的密码以某种方式泄露 - 黑客最终会在“读取”数据时访问未加密的数据。但随后即使使用 pgcrypto,如果 GAE 服务器受到威胁,他们仍然能够运行代码来获取未加密的数据。

这是我想太多了吗?目标是通过引入尽可能多的“障碍”,让最终用户完全放心,以确保他们的数据完全安全。我有一种感觉,我真的不需要 pgcrypto,但正在寻找有根据的回复。

0 投票
1 回答
663 浏览

postgresql - 有没有办法在 Postgres 中验证签名摘要?

运行以下命令,并将 content_file、signature_file 和 id_rsa.pub(或 pem)的内容插入 Postgres 数据库。

openssl dgst -sign id_rsa content_file > signature_file

有什么方法可以验证签名是否与 Postgres 中的内容/公钥对应?

我查看了pgcrypto函数,但是唯一相关的函数似乎是 pgp_pub_decrypt ,它需要密钥。

基本上我希望在 Postgres 中执行以下操作:

openssl dgst -verify .\id_rsa.pem -signature .\signature_file .\content_file