Hash 与签名工具 - MD5、SHA、HMAC、文件 Hash 和 Bcrypt

在线生成文本 Hash、文件 Hash、HMAC 签名和 Bcrypt 密码哈希,支持 MD5、SHA-1、SHA-256、SHA-512 等常见摘要算法。

功能特点

  • 生成文本 MD5、SHA-1、SHA-256、SHA-512 等摘要
  • 计算文件 Hash,便于校验下载文件和构建产物完整性
  • 生成 HMAC 签名,辅助接口鉴权和 Webhook 调试
  • 区分 Hash 完整性校验、HMAC 消息认证、数字签名和 Bcrypt 密码哈希,不把摘要当作加密
  • 生成和校验 Bcrypt 密码哈希,适合安全开发测试

使用方法

  1. 输入文本、上传文件或填写 HMAC 密钥
  2. 选择 Hash、文件校验、HMAC 或 Bcrypt 处理方式,并确认算法、原文编码和输出格式
  3. 复制摘要、签名或校验结果后,用发布方摘要、Webhook 原始请求体或密码 compare 流程复核

示例输入

  • 文本 SHA-256

    hello

    适合快速比对文本摘要、配置指纹和接口签名原文。

  • Webhook HMAC-SHA256

    message: {"event":"invoice.paid","id":"evt_123"}
    secret: webhook-secret

    适合模拟 Webhook 签名生成,实际接入时还要确认原始请求体和编码。

  • 文件完整性校验

    上传构建产物或下载文件后,比较本地 SHA-256 与发布页提供的摘要。

    适合排查下载损坏、代理缓存异常和构建产物是否被替换。

  • Webhook 原始请求体验签

    HTTP body 原文:{"id":"evt_123","amount":99}
    Header:X-Signature: sha256=<SIGNATURE>
    Secret:<WEBHOOK_SECRET>

    适合按供应商文档使用未改写的原始 Body、精确字节和签名格式复算,再用常量时间比较验证。

示例输出

  • 文本 SHA-256

    SHA-256: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
  • Webhook HMAC-SHA256

    HMAC-SHA256(hex,使用所示 secret 与精确消息字节):a11b4a5fa3f935fcb3870f3a235da732af7c980af99f6aa13d93e6e218c5df9a
  • 文件完整性校验

    输出本地文件 SHA-256;仅当它与发布方提供的完整摘要逐字符一致时,完整性校验通过
  • Webhook 原始请求体验签

    按原始 HTTP Body 与 X-Signature: sha256=<SIGNATURE> 复算;实际签名需以供应商文档和服务端常量时间比较为准

常见错误

  • Hash 是不可逆摘要,不是加密;不能用 Hash 结果还原原文。
  • MD5 和 SHA-1 不适合新的安全校验或密码存储,优先根据协议使用 SHA-256 及更安全方案。
  • HMAC 签名必须保证原文、换行、空格、字段顺序和字符编码完全一致。
  • 文件 Hash 不一致时,应先确认文件是否完整、下载是否经过解压或换行转换。
  • HMAC 能证明持有共享密钥的一方生成了消息,但不能提供非对称数字签名的不可否认性。
  • Bcrypt 用于密码哈希,不应与普通 SHA-256 直接替换;校验时应使用对应的 compare 流程。

适用场景

  • SHA-256 在线计算
  • 文件 Hash 校验
  • Webhook 签名生成
  • API 签名排查
  • Bcrypt 密码测试
  • 构建产物完整性验证

实操检查

  • 验证固定 SHA-256

    固定输入:Text Hash 模式、文本 `hello`、主算法 SHA-256、输出大写关闭。步骤:生成 Hash。预期结果:SHA-256 为 `2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824`。失败判断:摘要不同、大小写选项未生效,或结果没有同时展示 MD5/SHA-1/SHA-256。

  • 验证 Bcrypt compare

    固定输入:明文 `secret`、Rounds `10`。步骤:生成 Bcrypt 哈希,复制生成值到校验哈希字段,把校验明文填为 `secret` 并执行验证;再把校验明文改为 `secret!` 重试。预期结果:第一次显示匹配成功,第二次显示匹配失败。失败判断:错误明文仍成功,或正确明文无法匹配。

页面专属核验

使用前与操作中

  • Text/File Hash 只生成 MD5、SHA-1、SHA-256 不可逆摘要;它们不是加密,MD5/SHA-1 不应作为新的抗碰撞安全设计,文件模式按本地文件字节计算。
  • HMAC 使用 Secret 和 SHA-1/SHA-256/SHA-512 生成十六进制签名,属于带密钥的完整性/认证校验;它不是公钥签名,也不会产生可解密的密文。
  • Bcrypt 是密码哈希与比对流程,rounds 会被实现限制在 4–12;只用测试密码,不能尝试从 Hash 反推明文,也不要把 Hash、HMAC Secret 或生产文件上传到不可信环境。

结果出来后

  • 文本或文件的实际字节、算法和大小写显示是否与接收端一致;例如 `hello` 的 SHA-256 是否为 `2cf24dba...b9824`?
  • HMAC 的 message、Secret 和算法是否完全一致,并在目标服务用同样的字节编码和十六进制格式验证,而不是只比较页面有输出?
  • Bcrypt 校验是否用原始密码与完整 `$2... Hash 与签名工具 - MD5、SHA、HMAC、文件 Hash 和 Bcrypt | ToolByte Hash 得到匹配/不匹配,且成本、密码策略和存储流程已由服务端单独确认?

相关工具

  • JWT 工具:解码 JWT、检查 exp 过期时间,并使用 HS256 生成和验证签名
  • 文本编码转换:统一转换 Base64、Hex、Binary、Unicode Escape、UTF-8 Hex、ASCII、HTML Entity 和 Morse
  • 密码生成器:生成随机密码并检测密码强度
  • 加密解密:统一处理 AES-GCM、RSA-OAEP、Caesar 和 ROT13 加密解密

工具边界

  • Hash 或 HMAC 输出不代表协议签名一定正确。
  • Bcrypt、SHA-256 和 MD5 的安全用途完全不同,不能互相替换。
  • 密钥、原文、换行、编码和输出格式任一不同都会导致摘要不同。

与相似工具的区别

  • 加密解密:Hash/HMAC 用于不可逆摘要、完整性和消息认证;Crypto Tool 用密钥加解密可恢复明文,两者用途不能互换。

安全与兼容性

  • 文本、文件与密钥在本地处理;示例 secret 不应用于生产,HMAC 密钥应从受控密钥系统读取并定期轮换。
  • MD5、SHA-1 和快速 SHA 摘要不适合存储密码;密码数据库应使用带盐的 Argon2、scrypt 或合适成本的 bcrypt。

下一步排查

  1. 先确认协议规定的算法、编码和输出格式。
  2. 用脱敏样本复算文本或文件摘要。
  3. 再到 JWT、Headers 或 cURL 工具验证实际鉴权请求。

常见问题

Hash 和加密有什么区别?

Hash 通常是不可逆摘要,用于校验和指纹;加密可以在密钥参与下解密回原文,两者目的不同。

为什么相同内容生成的 HMAC 不一样?

优先检查密钥、算法、原始请求体、空格换行、JSON 字段顺序和十六进制或 Base64 输出格式。

可以用 MD5 存储用户密码吗?

不建议。密码应使用专门的慢速密码哈希,例如 Bcrypt,并配合合理的成本参数和安全的凭据管理。

为什么 JSON 看起来一样但 HMAC 不同?

HMAC 计算的是精确字节,不是人眼看到的对象语义;空格、换行、字段顺序、Unicode 形式、密钥和输出编码任一不同都会改变结果。