OpenSSL密码盐值与载荷编码方案是什么?
OpenSSL密码哈希的盐值与哈希值编码说明
你遇到的是OpenBSD风格的密码哈希格式(你的示例里$5$对应SHA-256算法,$1$代表MD5,$6$代表SHA-512),盐值和哈希值采用的是Base64变种编码,和标准Base64的字符集存在差异:
- 标准Base64字符集:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ - 该变种字符集:
./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz(将标准集的+替换为.,调整了字符顺序)
从Base64字节串转换为OpenSSL格式的步骤:
- 分别将Base64格式的盐值、哈希值解码为原始二进制数据
- 使用上述变种Base64字符集对二进制数据重新编码
- 按照
$算法标识$编码后的盐值$编码后的哈希值的格式拼接成最终字符串
注意:这类格式中盐值通常最多16字节(编码后不超过22字符),SHA-256哈希值为32字节,编码后正好是43字符,和你的示例长度匹配。
内容的提问来源于stack exchange,提问作者pixelou
相关产品推荐
相关产品推荐

