使用SHA256加密密码创建Redshift用户失败,求排查方法
Redshift带盐SHA256密码创建失败的原因及解决方法
你的问题出在哈希输入的处理方式上——Redshift要求将盐的二进制值与明文密码的二进制值拼接后计算SHA256,而非直接拼接盐的十六进制字符串和明文密码字符串。
错误原因分析
你之前执行的sha2('ChangeThisPassword123!c721bff5d9042cf541ff7b9d48fa8a6e545c19a763e3710151f9513038b0f6c6', 256),本质是把密码字符串和盐的十六进制字符(比如c、7、2这些ASCII字符)拼接后哈希,这和Redshift验证时使用的输入完全不一致,自然无法通过登录验证。
正确操作步骤
- 将盐的十六进制字符串转换为二进制值(用
from_hex函数) - 将明文密码转换为二进制字节流(用
convert_to指定UTF8编码) - 拼接上述两个二进制值,计算SHA256哈希
- 将哈希结果转换为十六进制字符串(用
to_hex),再按sha256|digest|salt格式创建用户
具体SQL示例
第一步:计算正确的SHA256摘要
SELECT to_hex( sha2( convert_to('ChangeThisPassword123!', 'UTF8') || from_hex('c721bff5d9042cf541ff7b9d48fa8a6e545c19a763e3710151f9513038b0f6c6'), 256 ) );
第二步:使用正确摘要创建用户
假设第一步得到的正确摘要为xxxxxx...,执行:
CREATE USER exampleuser PASSWORD 'sha256|xxxxxx...|c721bff5d9042cf541ff7b9d48fa8a6e545c19a763e3710151f9513038b0f6c6';
这样生成的密码就能正常通过登录验证了。
内容的提问来源于stack exchange,提问作者Simon D
相关产品推荐
相关产品推荐

