【发布时间】:2019-03-21 19:51:56
【问题描述】:
在通常情况下,连接字符串包含明文密码,但这可以被 Wireshark 捕获,所以我想在连接字符串中使用加密密码。我从 Postgres 文档中找到了以下摘录:
通过网络加密密码 MD5 身份验证方法 在将密码发送到客户端之前,对客户端上的密码进行双重加密 服务器。它首先根据用户名对其进行 MD5 加密,然后 根据服务器发送的随机盐对其进行加密,当 建立了数据库连接。正是这个双重加密的值 通过网络发送到服务器。不仅双重加密 防止密码被发现,但它也防止另一个 使用相同的加密密码连接到 数据库服务器。
如果我理解正确的话,为了得到盐,我需要连接数据库,但这是否意味着密码可以被欺骗?
我尝试谷歌搜索,但没有找到令人满意的解决方案。我想了解如何使用 java 从 PostgreSQL 服务器获取随机盐,然后用它加密纯密码并使用加密密码建立连接。
【问题讨论】:
-
您连接到服务器,在发送任何登录信息之前服务器会向您发送盐,然后您使用散列密码登录。您使用的客户端库应该处理这个问题,而不是您。
-
@SamiKuhmonen 您的意思是 postgresql 驱动程序本身就支持这一点。除了调用通常的 getConnection 之外,我不需要做任何其他更改?
标签: java postgresql encryption