如何使用加密密码连接到 PostgreSQL 服务器

2023-12-31

在通常的情况下,连接字符串包含纯文本的密码,但这可以被Wireshark捕获,所以我想在连接字符串中使用加密的密码。我从 Postgres 文档中找到了以下摘录:

通过网络加密密码MD5认证方式 在将密码发送到客户端之前,在客户端对密码进行双重加密 服务器。首先根据用户名进行MD5加密,然后 根据服务器发送的随机盐对其进行加密 已建立数据库连接。正是这个双重加密的值 通过网络发送到服务器。不仅双重加密 防止密码被发现,同时也防止其他人发现 使用相同的加密密码连接到 稍后再使用数据库服务器。

如果我理解正确的话,要获取盐,我需要连接到数据库,但这是否意味着密码可以被欺骗?

我尝试用谷歌搜索,但没有找到令人满意的解决方案。我想了解如何使用 java 从 PostgreSQL 服务器获取随机盐,然后用它加密纯密码并使用加密密码建立连接。


如果您,用户arvind,将密码设置为secret, the actual密码设置为

'md5' || md5('secret' || 'arvind')

that is md50624d6c2e831004efb7f4173699a1775。这就是您会在pg_authid系统目录。

现在连接的建立是这样的:

客户端到服务器:我想连接数据库mydb作为用户arvind.

服务器到客户端:好的,我想要 MD5 认证。你的盐是g73j.

已给客户secret作为密码。

首先,它使用上面的公式来得到real密码(第一次哈希)。

然后,客户端使用第二次散列密码

'md5' || md5('0624d6c2e831004efb7f4173699a1775' || 'g73j')

客户端到服务器:哈希密码是md573ae1f550fb4bcd28411cefb24b800bc.

服务器计算相同的哈希值并将结果与​​从客户端获得的结果进行比较。

如果相同,服务器就知道客户端必须拥有真实的密码,否则它无法计算出正确的哈希值。

密码本身不会被传输,因此窃听者无法窃取。

服务器到客户端:好的,你进来了。

当然,实际的消息看起来有所不同,但这就是全部文档 https://www.postgresql.org/docs/current/protocol-flow.html#id-1.10.5.7.3.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用加密密码连接到 PostgreSQL 服务器 的相关文章

  • Java Runtime.getRuntime().freeMemory() 问题

    我搜索并看到了一些线程 但没有一个能够解决我遇到的具体问题 我正在尝试使用以下方式监视我的内存使用情况Runtime getRuntime freeMemory Runtime getRuntime maxMemory and Runtim
  • JVisualVM/JConsole 中的 System.gc() 与 GC 按钮

    我目前正在测试处理 XML 模式的概念验证原型 并围绕一个非常消耗内存的树自动机外部库 我已经获得了源代码 构建 我想绘制 真实峰值 堆 随着模式大小的增加 不同运行的内存消耗 使用的指标符合我的目的并且不会影响问题 或者至少是它的合理近似
  • 使用 GWT 读取非常大的本地 XML 文件

    我正在使用 GWT 构建我的第一个 Java 应用程序 它必须从一个非常大的 XML 文件中读取数据 当我尝试发送对文件中信息的请求时遇到问题 并且我不太确定它是否与文件的大小或我的语义有关 在我的程序中 我有以下内容 static fin
  • 是否有任何简单(且最新)的 Java 框架可用于在 Swing 应用程序中嵌入电影?

    我正在构建一个小型 Swing 应用程序 我想在其中嵌入一部电影 重要的是 这个应用程序是一个 WebStart 应用程序 并且该库应该能够打包在我启动的 jnlp 中 即 不依赖于本机库 我知道并尝试过 JMF 但我认为与其他框架相比 其
  • Spring Data JPA 选择不同

    我有一个情况 我需要建立一个select distinct a address from Person a 其中地址是 Person 内的地址实体 类型的查询 我正在使用规范动态构建我的 where 子句并使用findAll Specifi
  • Spring Boot自动装配存储库始终为空[重复]

    这个问题在这里已经有答案了 每次我进入我的服务类时 存储库似乎都没有自动连接 因为它不断抛出 NullPointerException 谁能帮我检查一下我缺少什么吗 这是我的代码 演示应用程序 java package com exampl
  • 在 Wildfly 中与 war 部署共享 util jar 文件

    假设我有一个名为 util jar 的 jar 文件 该 jar 文件主要包含 JPA 实体和一些 util 类 无 EJB 如何使这个 jar 可用于 Wildfly 中部署的所有 war 无需将 jar 放置在 war 的 WEB IN
  • 如何将 Mat (opencv) 转换为 INDArray (DL4J)?

    我希望任何人都可以帮助我解决这个任务 我正在处理一些图像分类并尝试将 OpenCv 3 2 0 和 DL4J 结合起来 我知道DL4J也包含Opencv 但我认为它没什么用 谁能帮我 如何转换成 INDArray 我尝试阅读一些问题here
  • ConcurrentHashMap 内部是如何工作的?

    我正在阅读有关 Java 并发性的 Oracle 官方文档 我想知道Collection由返回 public static
  • 套接字的读写如何同步?

    我们创建一个套接字 在套接字的一侧有一个 服务器 在另一侧有一个 客户端 服务器和客户端都可以向套接字写入和读取 这是我的理解 我不明白以下事情 如果服务器从套接字读取数据 它在套接字中是否只看到客户端写入套接字的内容 我的意思是 如果服务
  • 生成的序列以 1 开头,而不是注释中设置的 1000

    我想请求一些有关 Hibernate 创建的数据库序列的帮助 我有这个注释 下面的代码 在我的实体类中 以便为合作伙伴表提供单独的序列 我希望序列以 1000 开头 因为我在部署期间使用 import sql 将测试数据插入数据库 并且我希
  • 从 GitHub 上托管的 Spring Cloud Config Server 访问存储库的身份验证问题

    我在 GitHub 上的存储库中托管配置 如果我将回购公开 一切都好 但如果我将其设为私有 我将面临 org eclipse jgit errors TransportException https github com my user m
  • 在另一个模块中使用自定义 gradle 插件模块

    我正在开发一个自定义插件 我希望能够在稍后阶段将其部署到存储库 因此我为其创建了一个独立的模块 在对其进行任何正式的 TDD 之前 我想手动进行某些探索性测试 因此 我创建了一个使用给定插件的演示模块 到目前为止 我发现执行此操作的唯一方法
  • 流中的非终结符 forEach() ?

    有时 在处理 Java Stream 时 我发现自己需要一个非终端 forEach 来触发副作用但不终止处理 我怀疑我可以用 map item gt f item 之类的方法来做到这一点 其中方法 f 执行副作用并将项目返回到流中 但这似乎
  • HashMap 值需要不可变吗?

    我知道 HashMap 中的键需要是不可变的 或者至少确保它们的哈希码 hashCode 不会改变或与另一个具有不同状态的对象发生冲突 但是 HashMap中存储的值是否需要与上面相同 为什么或者为什么不 这个想法是能够改变值 例如在其上调
  • QuerySyntaxException:无法找到类

    我正在使用 hql 生成 JunctionManagementListDto 类的实际 Java 对象 但我最终在控制台上出现以下异常 org hibernate hql internal ast QuerySyntaxException
  • Resteasy 可以查看 JAX-RS 方法的参数类型吗?

    我们使用 Resteasy 3 0 9 作为 JAX RS Web 服务 最近切换到 3 0 19 我们开始看到很多RESTEASY002142 Multiple resource methods match request警告 例如 我们
  • 使用按钮作为列表的渲染器

    我想使用一个更复杂的渲染器 其中包含列表的多个组件 更准确地说 类似于this https stackoverflow com questions 10840498 java swing 1 6 textinput like firefox
  • 配置“DataSource”以使用 SSL/TLS 加密连接到 Digital Ocean 上的托管 Postgres 服务器

    我正在尝试托管数据库服务 https www digitalocean com products managed databases on 数字海洋网 https en wikipedia org wiki DigitalOcean 创建了
  • 在浏览器刷新中刷新检票面板

    我正在开发一个付费角色系统 一旦用户刷新浏览器 我就需要刷新该页面中可用的统计信息 统计信息应该从数据库中获取并显示 但现在它不能正常工作 因为在页面刷新中 java代码不会被调用 而是使用以前的数据加载缓存的页面 我尝试添加以下代码来修复

随机推荐

  • 如何处理 RSpec 和 Rails 中的模拟嵌套资源?

    我有一个用户阅读列表的嵌套资源 用户有很多阅读列表 我试图模拟控制器规格中的所有内容 但无法保持简洁 这是 show 操作之前的代码 reading lists mock Reading lists reading lists stub f
  • f2py 的附加编译器标志

    我想使用旗帜 ftree vectorize 编译器手册 https gcc gnu org projects tree ssa vectorization html 作为 f2py 使用的 gnu fortran 编译器的附加参数 根据f
  • 测试连接内解析 DnsName

    我想知道如何退回Resolve DnsName我的输出Test Connection脚本并将其添加到我创建的 CSV 中 我喜欢从中捕获名称 类型 TTL 部分 仅调用Resolve DnsName当 ping 不成功时 servers G
  • 在Java中,两个字符相加的结果是int还是char?

    添加时 a b 它产生 195 是输出数据类型char or int 添加 Java 字符 短整型或字节的结果是int 关于二进制数字提升的 Java 语言规范 http docs oracle com javase specs jls s
  • 在 Java 中反序列化序列化的 php 对象

    有谁知道是否有可能 实际上是否已经完成 在 php 中序列化对象并在 Java 中反序列化 java php 通信 也许需要一个适配器 你怎么认为 Thanks 有serialized php parser http code google
  • 使用 Jinja2 对 JavaScript 进行转义字符串?

    如何使用 Jinja2 转义 HTML 以便它可以用作 JavaScript jQuery 中的字符串 如果我使用 Django 的模板系统 我可以这样写 mydiv append html string escapejs 姜戈的 esca
  • 减去双打时的奇怪结果[重复]

    这个问题在这里已经有答案了 可能的重复 为什么 C 中的浮点运算不精确 https stackoverflow com questions 753948 why is floating point arithmetic in c impre
  • Matplotlib:重新排序子图

    Say that I have a figure fig which contains two subplots as in the example from the documentation http matplotlib org ex
  • 为什么 nuget 要安装一堆系统命名空间引用?

    我正在尝试从 nuget 安装一个库 我原本期望可能有 3 或 4 个不同的依赖项 但它安装了一大堆System依赖关系 这是日志 Attempting to gather dependency information for packag
  • Android Studio 2.3.3 首次运行时卡住

    我下载了安卓工作室2 3 3 https developer android com studio index html for Linux并将内容解压到 usr local then cd android studio bin 编辑了文件
  • 当我从 MainLayout 停止代码时,防止代码在我的页面上运行

    我有一个带有 MainLayout 的 Blazor PWA 应用程序和一堆页面 每当用户未登录时 我想将他们重定向到登录屏幕 如果我可以将它们从 MainLayout 重定向到登录屏幕 我已经知道用户尚未登录 那就太好了 我只是检查 co
  • 房间失效跟踪器初始化两次

    我有一个水平回收器视图 其中包含自定义项目 每个项目都可以保留当前项目在回收器视图中的位置 我想在使用拖放移动项目时更新项目位置 但是 当水平视图中的项目超过三个时 数据将被删除 请帮助我 源代码 https github com parm
  • 使用 Parse 和 PubNub 的 Android 聊天应用程序指南

    我正在尝试创建一个简单的 Android 聊天应用程序 用户可以在其中注册并拥有好友列表来开始对话 我打算使用Parse https parse com 对于数据库后端和PubNub http www pubnub com 对于实际的聊天频
  • 如何使用 AWS Amplify 和 Next.js 创建生产环境变量

    我有一个 API 密钥 需要它来访问 API 端点 在我的 Next js 应用程序中 我将此密钥存储在 env local像这样 API KEY qwerty123 我在我的getStaticProps与 process env 一起使用
  • Gcm电话注册错误

    我正在尝试设置一个应用程序来与 gcm 一起使用 但每次我收到phone registration error 错误 根据 Gcm 文档 此错误意味着 Incorrect phone registration with Google Thi
  • 如何将变量传递给使用 gcc 编译的 intel 格式内联 asm 代码

    我想向您寻求一些帮助 我有一个包含大量 C 源代码的项目 大多数是用gcc编译的 但也有一些是用Intel编译器编译的 后面的代码在微软有很多内联asm代码MASM格式 我想用 gcc 编译整个项目并修改尽可能少的代码 所以我编写了一个 p
  • 无法解析新 Android Studio 项目上的符号 GooglePlayServicesClient

    我刚刚安装了 Android Studio 1 1 0 并创建了一个新项目 我使用包括 Google 登录在内的登录活动创建了它 项目一打开 我就看到很多错误PlusBaseActivity java 这些似乎源于这样一个事实 com go
  • iOS7:UITapGestureRecognizer 重用问题

    我设置了三个按钮 每个按钮都标记为 1 3 我的 UITapGestureRecognizer 仅工作一次 并且仅适用于第一个 UIButton 无法选择其他两个选项 代码 void viewDidLoad super viewDidLoa
  • 从另一个列表中获取项目的边界

    我有一个清单 就像 tlist 0 0 0 07 0 13 0 15 0 2 0 22 which is sorted 我还有另一个清单 newlist 0 0 0 04 0 08 0 12 0 16 0 2 numbers with a
  • 如何使用加密密码连接到 PostgreSQL 服务器

    在通常的情况下 连接字符串包含纯文本的密码 但这可以被Wireshark捕获 所以我想在连接字符串中使用加密的密码 我从 Postgres 文档中找到了以下摘录 通过网络加密密码MD5认证方式 在将密码发送到客户端之前 在客户端对密码进行双