postgresql 加密

2024-04-15

我有 oracle 数据库可以转移到新的 postgresql 服务器。

某些表具有敏感字段,并且这些表均通过 DBMS_OBFUSCATION_TOOLKIT.DESENCRYPT/DESENCRYPT 进行加密。

问题就在这里。 postgresql的加密数据大小(bytea类型)的大小应该与oracle的相同。

我尝试使用 aes(加密/解密)来完成它,它的大小几乎是原始数据的三倍。(oracle 使用 des 算法需要 16 字节,postgresql 使用 aes 需要 33 字节,原始数据为 13 字节。)

我也尝试了 postgresql crypt,但是手册没有提到解密它的方法,限制原始数据大小的 8 字节。

现在我真的需要加密方法,它需要尽可能小的加密数据大小,并且还提供解密方法。

有什么好的方法或其他选择适合我吗? 提前致谢。


Crypt 和 DES 是旧密码,不应使用

普通旧式 DES 是一种过时的算法。您无法将其与 AES128 进行真正有用的比较;这就像抱怨 SHA256 哈希值比 MD5 哈希值大 - 是的,确实如此,但只有其中一个可能会暂时减慢攻击者的速度。 DES 是即使在 1999 年也被广泛认为是薄弱的 http://en.wikipedia.org/wiki/Data_Encryption_Standard并且永远不应该在新的应用程序中使用。不要使用它。

我认为寻求一种“提供尽可能小的数据大小”的加密方法不是一个好主意 - 因为使用 DES 加密数据基本上是浪费时间。为什么不使用 ROT13(凯撒密码)? “加密”的结果与输入的大小相同,遗憾的是加密可以被 3 岁的孩子破解。

crypt是类似年份的。老人UNIX 密码哈希算法 http://en.wikipedia.org/wiki/Crypt_(Unix)是......老年人......并且完全不适合任何新的应用程序。确实,哈希值至少应该是 SHA256。

Crypt 是一种单向哈希

至于无法弄清楚如何解密加密数据:crypt不是加密算法,而是加密哈希函数 http://en.wikipedia.org/wiki/Cryptographic_hash_function或“单向哈希”。与存储的数据相比,哈希值适合验证数据未被修改的一种方式salted http://en.wikipedia.org/wiki/Salt_(cryptography)用于密码验证的哈希值,用于挑战-响应认证 http://en.wikipedia.org/wiki/Challenge%E2%80%93response_authentication等。您无法解密加密数据。

处理好尺寸

使用合适的加密函数并适应大小的增加。bf or aes128大约是您可以合理使用的最弱的。

就我个人而言,我更喜欢在应用程序中进行加密/解密,而不是在数据库中。如果它是在数据库中完成的,则可以通过以下方式显示密钥pg_stat_statements,在日志中log_statement或错误等。最好密钥永远不要与存储的数据位于同一位置。

大多数编程语言都有可供使用的良好加密例程。

很难提供更多建议,因为您还没有真正解释您要加密的内容、原因、您的要求是什么、威胁是什么等等。

密码?

如果您存储密码,那么您可能做错了。

  • 如果可能,请让其他人进行身份验证:

    • 用于互联网的 OAuth 或 OpenID

    • 用于 Intranet 的 SSPI、Kerberos/GSSAPI、Active Directory、LDAP 绑定、SASL、HTTP DIGEST 等

  • 如果您确实必须自己进行身份验证,请在密码中添加盐并对结果进行哈希处理。存储哈希值和盐。当您必须比较密码时,请使用与存储的哈希值相同的盐对来自用户的新明文加盐,对新密码+盐进行哈希处理,然后查看哈希值是否与您存储的相同。如果是的话,他们就给出了正确的密码。

  • 您几乎肯定不需要恢复明文密码。相反,实施安全密码重置。如果您确实、确实必须,请使用 aes 等相当安全的算法来加密它们,并仔细考虑密钥存储和管理。请参阅 SO 上有关使用 pgcrypto 进行密钥存储/管理的其他帖子。

也可以看看:

  • 存储/检索 PGP 私钥和密码的安全方法? https://stackoverflow.com/q/12329652/398670
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

postgresql 加密 的相关文章

  • 如何在查询中生成序列号?

    我们使用 PostgreSQL v8 2 3 如何在查询输出中生成序列号 我想显示查询返回的每一行的序列号 例子 SELECT employeeid name FROM employee 我希望生成并显示从一开始的每一行的序列号 你有两个选
  • Heroku 上的 Python 入门 - 未找到 pg_config 可执行文件

    我一直在关注文档 直到安装requirements txt 文件 尝试安装第 6 行 psycopg2 2 5 3 时总是失败 这是消息 Downloading unpacking psycopg2 2 5 3 from r require
  • org.postgresql.util.PSQLException:协议错误。会话设置失败

    我知道这些类型的问题已经存在 但提供的解决方案对我不起作用 在我的应用程序中 没有版本不匹配的黑白驱动程序和 PostgreSQL 服务器 我还没有找到任何其他解决方案 我正在使用 PostgreSQL 服务器 9 4 和 postgres
  • 在PostgreSQL中使用查询设置列类型

    优秀后answer https stackoverflow com questions 4336259 how to query the schema details of a table in postgres作者 Alexandre G
  • 如何使用 libpq 获取双精度值?

    The examples http www postgresql org docs 9 3 interactive libpq example htmllibpq 文档中展示了如何通过将整数值转换为主机字节序表示来获取整数值 我很好奇必须做
  • 查询交叉表视图

    我在 PostgreSQL 中有一个表 如下所示 Item1 Item2 Item3 Item4 Value1 Value2 Value3 Value4 我想要一个查询 该查询将显示如下表 ItemHead ValueHead Item1
  • 如何在 postgreSQL 中从时间戳中减去/添加分钟

    我有以下场景 我有员工登记他们的上班 下班手续 但他们有10分钟的容忍度 我通过这种观点得到的最新条目 CREATE OR REPLACE VIEW employees late entries id created datetime en
  • AES 会话密钥的 RSA 解密失败,并显示“AttributeError:‘bytes’对象没有属性‘n’”

    我正在努力在 Python 3 6 上从 PyCryptodome 实现公钥加密 当我尝试创建对称加密密钥并加密 解密变量时 一切正常 但是当我引入 RSA 和 PKCS1 OAEP 的那一刻 一切就都顺理成章了 session key加密
  • 加密 mongodb 中的密码字段

    我有以下代码 它插入userName and password进入数据库 但密码以纯文本格式存储 我的意思是 当我查看数据库时 我可以看到插入的密码 我想存储password in encrypted format MongoClient
  • Postgres 使用 Rails Active Record 在 IN 列表中 ORDER BY 值

    我收到按 收入 排序的 UserId 列表 一次大约 1000 个 我在 我的系统数据库 中有用户记录 但 收入 列不存在 我想从 我的系统数据库 中检索用户 按照列表中收到的排序顺序 我尝试使用 Active Record 执行以下操作
  • JSON 值的模式匹配

    运行 Postgres 12 5 的本地 docker 实例 4MBwork mem 我正在实施这个图案 https dba stackexchange com q 108447 3684搜索 json 中的任意字段 目标是搜索并返回 JS
  • Postgres where 子句比较时间戳

    我有一个表 其中列的数据类型timestamp 其中包含一天的多条记录 我想选择与日期对应的所有行 我该怎么做 Assuming you actually mean timestamp because there is no datetim
  • Java AES 256 加密

    我有下面的 java 代码来加密使用 64 个字符密钥的字符串 我的问题是这会是 AES 256 加密吗 String keyString C0BAE23DF8B51807B3E17D21925FADF273A70181E1D81B8EDE
  • 每个搜索词显示一行,如果未找到则替换默认值

    Query SELECT product id name FROM product WHERE barcode in 681027 8901030349379 679046 679047 679082 679228 679230 67923
  • postgresql-按每个元素中的单词对数组进行排序

    有字符串数组 ARRAY CAT CAT DOG CAT DOG Cat 现在我想根据每个元素中的单词数对该数组进行排序 我已经尝试过 但没有取得任何成功 我想要这个输出 ARRAY CAT DOG CAT DOG CAT Cat 我怎样才
  • postgresql中数组的区别

    我有两个数组 1 2 3 4 7 6 and 2 3 7 在 PostgreSQL 中可能有共同的元素 我想做的是从第一个数组中排除第二个数组中存在的所有元素 到目前为止我已经取得了以下成果 SELECT array SELECT unne
  • 提高 PostgreSQL 1 亿数据左连接查询性能

    我在用Postgresql 9 2 version Windows 7 64 bit RAM 6GB 这是一个Java企业项目 我必须在我的页面中显示订单相关信息 有三个表通过左连接连接在一起 Tables TV HD 389772 行 T
  • Postgresql 的 SQL_NO_CACHE?

    MySQL 关键字是否有等效的 postgresqlSQL NO CACHE 或 SQL Serverdbcc drop clean buffers 即您可以简单地将其包含在 SQL 语句中或作为脚本的一部分吗 UPDATE 这个问题 查看
  • 手动更改postgresql中查询的执行计划?

    是否可以在postgresql中手动更改执行计划的操作顺序 例如 如果我总是想在过滤之前进行排序操作 尽管这在 postgresql 的正常使用中没有意义 是否可以通过例如手动强制执行该操作改变运营的内部成本 如果我实现自己的功能呢 是否可
  • Postgres LIMIT/OFFSET 奇怪的行为

    我正在使用 PostgreSQL 9 6 我有一个这样的查询 SELECT anon 1 id AS anon 1 id anon 1 is valid AS anon 1 is valid anon 1 first name AS ano

随机推荐

  • 将 celery 任务结果链接到通讯组中

    Like in 这另一个问题 https stackoverflow com questions 13271056 how to chain a celery task that returns a list into a group 我想
  • 绘制别名、像素完美的 1px 样条线(特别是 Catmull-Rom)

    简要背景 我正在开发一个基于 Web 的绘图应用程序 需要绘制穿过其控制点的 1px 粗样条线 我正在努力解决的问题是我需要绘制 p1 和 p2 之间的每个像素 就像我使用 1px 铅笔工具一样 因此 没有抗锯齿功能 一次一个像素 这需要手
  • MySQL 如何使用 INTO OUTFILE 追加到文件?

    我有以下代码 SELECT INTO OUTFILE TestInput Results csv FIELDS TERMINATED BY LINES TERMINATED BY n FROM Results 期望的结果是不断附加到 Res
  • 将二叉树转换为排序数组

    有没有一种方法可以将二进制转换为排序数组 而不必遍历树来查找每个数组索引 Node root Node runner int current smallest void findsmallest Node root Pre order tr
  • 使用 Python 从 AWS Lambda 连接到 DocumentDB

    我正在尝试从 Lambda 函数连接到 DocumentDB 我已经按照此配置了我的 DocumentDBtutorial https aws amazon com getting started hands on getting star
  • 如何让Mermaid中指定的节点水平对齐?

    这是我的流程图 graph TB aaa gt bbb gt ddd ccc ddd gt fff ccc gt eee fff fff gt hhh ggg kkk hhh gt iii mmm ggg kkk gt mmm 但实际上我想
  • NHibernate - 左连接

    我有以下两个表 JobsAreaID JobNo 复合键 Logs日志ID 区域ID 作业编号 我需要获取所有没有与之关联的日志的作业 在 SQL 中我可以这样做 SELECT Jobs AreaID Jobs JobNo FROM Job
  • 使用 numpy 执行外加法

    抱歉 如果这是一个愚蠢的问题 但我刚刚开始使用 python numpy 我真的不确定最有效的方法 我正在为一些学生制作一个演示 N 体模拟器 但现在 我通过循环这些粒子的位置来计算粒子之间的力 可以预见 速度会像糖蜜一样慢 基本上 给定一
  • 在java中注入击键

    我正在寻找一种将击键注入操作系统键盘输入缓冲区的方法 就像当您单击一个按钮时 程序会插入一个 或多个 键盘敲击 我想在java中执行此操作 因为我想在 win linux和osx 中运行它 我想我必须利用 JNI 有人有什么想法吗 感谢所有
  • 向 Qt 对话框添加最小化按钮?

    我创建了一个QDialog基于使用 Qt Creator 的应用程序 除了对话框没有最小化按钮之外 一切都很好 我怎样才能添加一个 设计器中有我可以设置的属性吗 您无法自己添加最小化按钮 因为它是由窗口管理器处理的 您可以使用窗口管理器提示
  • Devise_token_auth 冲突?

    使用默认的 api 标签在 Rails 5 中创建了一个新的 API 并使用命令安装了 devise token auth gemrails generate devise token auth install User auth 关于做r
  • JavaScript 未知数量的参数

    在我的项目中 我注册了不同的函数 具有不同数量的参数 作为许多事件的侦听器 当事件发生时 我需要触发相关的函数 我接收以数组形式传递给侦听器方法的参数 而侦听器函数需要每个单独的参数 所以 我正在这样做 但我不喜欢这种方法 想知道是否有一种
  • 修改 Silverlight 3 中新 Popup 控件 (ChildWindow) 的外观/行为

    我想删除 Silverlight 3 中新 Popup 控件的灰色标题 如果这可能的话有什么想法吗 很简单 只需编辑默认的 ChildWindow 样式即可 在 Blend 3 中创建一个 ChildWindow 类型的新项目 右键单击项目
  • 在 Linux 中何时使用 pthread_exit() 以及何时使用 pthread_join()?

    我是 pthreads 的新手 我正在尝试理解它 我看到了一些例子 如下所示 我可以看到main 被 API 阻止pthread exit 而且我见过 main 函数被 API 阻塞的例子pthread join 我无法理解何时使用什么 我
  • Java 调试器:是否可以有选择地挂起线程?

    在我过去作为 C C 程序员的生活中 在某些平台和调试器组合上可以选择性地挂起线程 到达断点后 可以发出命令 或单击 GUI 中的内容 来冻结 解除冻结 挂起 唤醒 线程 在执行进一步的步骤 下一步 运行 继续命令时 挂起的线程将不会执行任
  • 使用 AWS codedeploy 部署 Nodejs 实例的 NPM 问题

    我目前正在尝试通过 Github 和 AWS Codedeploy 将 Nodejs 应用程序自动部署到 EC2 实例 我已按照以下指示进行操作here http docs aws amazon com codedeploy latest
  • Array.size() 与 Array.length

    两者有什么区别 所以我知道array size 是一个函数 而array length是一个属性 是否存在使用其中一种而不是另一种的用例 是不是效率更高 我会想象 length明显更快 因为它是一种属性而不是方法调用 为什么人们会使用较慢的
  • Wordpress Multisite - 无法访问子文件夹站点仪表板

    我是 WordPress 多站点新手 我发现了一个奇怪的问题 我已经安装了 WordPress 的新实例 并使用子文件夹启用了多站点 唯一的问题是当我创建新网站时 它无法正确显示 并且我无法访问新网站仪表板 我已将这些行添加到wp conf
  • 如何在 Power Query M 中发表评论?

    有没有办法注释 M 代码 注释掉代码行或代码块 M 支持两种不同类型的注释 单行注释可以以 开头 您可以使用 注释掉多行或注释掉行中间的文本 例如 1 some comment 2 如果注释位于行尾 则它们似乎会在公式栏中消失 但它们仍然存
  • postgresql 加密

    我有 oracle 数据库可以转移到新的 postgresql 服务器 某些表具有敏感字段 并且这些表均通过 DBMS OBFUSCATION TOOLKIT DESENCRYPT DESENCRYPT 进行加密 问题就在这里 postgr