linux - opessl sha-512 字符串字符集
问题描述
该实用程序openssl
可用于从给定字符串生成基于 sha512 的哈希。它可以在输出中产生的字符的可能范围是多少。我的意思是结果可以产生所有字符。我找不到任何相同的文档。
openssl passwd -6
Password:
Verifying - Password:
$6$qJV2Hr9qSOw4/Zxx$pVe4wDNy1mDRIAcPrIWEr0dCzpZQDS2Zb83Ix2pktuCd5jEwvQjO8EiDMFtlAQ/TfYXucKO8qWf9NtLQPbdgi1
以上是使用 .sha-512 哈希字符串的示例'openssl'
。
解决方案
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 字符,但至少'='
除了上面提到的那些。
推荐阅读
- c# - 将 Null-Propagation 运算符与 null-coalescing-operator 一起使用以引发空异常
- amazon-web-services - 使用正确的时间戳将 log4j2 JSON 格式的日志文件上传到 AWS CloudWatch
- typescript - Immer.js 使用未定义的基础对象
- php - 无法在命令行中更新 Composer
- c# - Parallel.ForEach 循环只允许一个线程访问 C# 中的数据库
- string-formatting - python中以字符串格式设置的解包仅返回第一个值
- amazon-web-services - S3 存储桶 - 限制特定 IAM 用户的下载次数
- php - 添加“如果产品属性为 then”代码
- excel - 如何用VBA打开一个没有内容的cvs文件?
- javascript - 搜索无法以角度工作的可折叠内容