首页 > 解决方案 > opessl sha-512 字符串字符集

问题描述

该实用程序openssl可用于从给定字符串生成基于 sha512 的哈希。它可以在输出中产生的字符的可能范围是多少。我的意思是结果可以产生所有字符。我找不到任何相同的文档。

openssl passwd -6
Password: 
Verifying - Password: 
$6$qJV2Hr9qSOw4/Zxx$pVe4wDNy1mDRIAcPrIWEr0dCzpZQDS2Zb83Ix2pktuCd5jEwvQjO8EiDMFtlAQ/TfYXucKO8qWf9NtLQPbdgi1

以上是使用 .sha-512 哈希字符串的示例'openssl'

标签: linuxencryptioncryptography

解决方案


SHA-512 可以产生的字符范围是多少?

所有 256 个可能的字节值,就像其他所有相关的散列函数一样。但是,由于输出实际上是随机的二进制数据,因此哈希值几乎总是被编码以将它们表示为纯 (ASCII) 文本。base16(十六进制)和 base64 很受欢迎。每种编码都有自己的字母表。

$6$qJV2Hr9qSOw4/Zxx$pVe4wDNy1mDRIAcPrIWEr0dCzpZQDS2Zb83Ix2pktuCd5jEwvQjO8EiDMFtlAQ/TfYXucKO8qWf9NtLQPbdgi1

以上是使用“openssl”的 SHA-512 哈希字符串示例

不,不是。它是crypt格式的密码哈希。所选模式基于 SHA-512,但输出编码的信息远不止 SHA-512 哈希值。据我所知,没有正式的 crypt 格式规范。

假设不包含任何参数对(据我所知,openssl 不会输出),字母表是 base64 plus 的字母表,'$'用作'.'分隔符。

要完全支持模块化加密格式中的所有可能值,包括那些带有键值参数的值(如$md5,rounds=5000$GUBv0xjJ$$mSwgIswdjlTY0YxV7HBVm0),您可能应该期望所有可打印的 ASCII 字符,但至少'='除了上面提到的那些。


推荐阅读