默认的PostgreSQL密码加密方法

3
我想知道如果我在创建用户或更改角色时没有指定ENCRYPTED,PostgreSQL使用的默认加密方法是什么(如果有的话)。
我在PostgreSQL网站上读到如下内容:
密码存储加密 默认情况下,数据库用户密码以MD5哈希形式存储,因此管理员无法确定分配给用户的实际密码。如果用于客户端身份验证的是MD5加密,则未加密的密码甚至在服务器上也从未暴露,因为客户端在通过网络发送前对其进行了MD5加密。
但我不确定MD5加密方法是否仅在我使用ENCRYPTED创建/更改角色/用户时使用。
我正在使用PostgreSQL 9.5
谢谢
1个回答

5

来自文档

这些关键词控制密码是否以加密形式存储在系统目录中。(如果没有指定,则默认行为由配置参数password_encryption确定。)如果提供的密码字符串已经是MD5加密格式,那么它将被原样加密存储,而不管是指定了ENCRYPTED还是UNENCRYPTED(因为系统无法解密指定的加密密码字符串)。这允许在转储/还原期间重新加载加密密码。

password_encryption默认为true,但您可以使用SHOW password_encryption检查它。

根据加密选项

密码存储加密默认情况下,数据库用户密码以MD5哈希方式存储,因此管理员无法确定分配给用户的实际密码。如果客户端身份验证使用MD5加密,那么未加密的密码甚至在服务器上也临时不存在,因为客户端在发送到网络之前会对其进行MD5加密。


谢谢你提供的信息,Evan。我运行了查询:Show password_encryption,它显示为YES。这是否意味着pg_user密码是使用MD5加密保存的? - P_Ar
有没有一种方法可以将用户密码存储为SHA而不是MD5? - P_Ar
2
@P_Ar 不同的问题。 - Evan Carroll

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接