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 密码哈希,适合安全开发测试
使用方法
- 输入文本、上传文件或填写 HMAC 密钥
- 选择 Hash、文件校验、HMAC 或 Bcrypt 处理方式,并确认算法、原文编码和输出格式
- 复制摘要、签名或校验结果后,用发布方摘要、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: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824Webhook 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 得到匹配/不匹配,且成本、密码策略和存储流程已由服务端单独确认?
相关工具
工具边界
- Hash 或 HMAC 输出不代表协议签名一定正确。
- Bcrypt、SHA-256 和 MD5 的安全用途完全不同,不能互相替换。
- 密钥、原文、换行、编码和输出格式任一不同都会导致摘要不同。
与相似工具的区别
- 加密解密:Hash/HMAC 用于不可逆摘要、完整性和消息认证;Crypto Tool 用密钥加解密可恢复明文,两者用途不能互换。
安全与兼容性
- 文本、文件与密钥在本地处理;示例 secret 不应用于生产,HMAC 密钥应从受控密钥系统读取并定期轮换。
- MD5、SHA-1 和快速 SHA 摘要不适合存储密码;密码数据库应使用带盐的 Argon2、scrypt 或合适成本的 bcrypt。
下一步排查
- 先确认协议规定的算法、编码和输出格式。
- 用脱敏样本复算文本或文件摘要。
- 再到 JWT、Headers 或 cURL 工具验证实际鉴权请求。
常见问题
Hash 和加密有什么区别?
Hash 通常是不可逆摘要,用于校验和指纹;加密可以在密钥参与下解密回原文,两者目的不同。
为什么相同内容生成的 HMAC 不一样?
优先检查密钥、算法、原始请求体、空格换行、JSON 字段顺序和十六进制或 Base64 输出格式。
可以用 MD5 存储用户密码吗?
不建议。密码应使用专门的慢速密码哈希,例如 Bcrypt,并配合合理的成本参数和安全的凭据管理。
为什么 JSON 看起来一样但 HMAC 不同?
HMAC 计算的是精确字节,不是人眼看到的对象语义;空格、换行、字段顺序、Unicode 形式、密钥和输出编码任一不同都会改变结果。