Base64 / URL 在线编解码与 MD5 / SHA256 哈希计算工具
纯前端离线一站式加密解密与哈希工具箱:支持中文字符与 Emoji 的 Base64 编码解码、URL 参数 Encode/Decode 转码,以及标准 MD5 与 SHA-256 摘要哈希极速计算。
常见编解码与哈希算法对比指南
| 算法/格式 | 是否可逆 | 输出长度 | 核心应用场景 |
|---|---|---|---|
| Base64 | 可逆 | ~ 原文本 133% | 文本协议传输图片、内联资源、邮件协议附件 |
| URL Encode | 可逆 | 视非ASCII字符而定 | HTTP GET 请求 Query 参数中包含特殊标点与汉字转义 |
| MD5 | 不可逆 | 32 位十六进制 | 快速文件完整性校验 (Checksum)、数据指纹生成 |
| SHA-256 | 不可逆 | 64 位十六进制 | 数字证书验签、区块链加密哈希、安全密码存证 |
常见问题解答 (FAQ)
Q: 为什么在部分网站进行 Base64 编解码时中文会出现乱码?
A: 浏览器原生的 btoa 和 atob 函数仅支持单字节 Latin1 字符(0-255)。遇到多字节的 UTF-8 中文字符或 Emoji 表情时会直接抛出字符越界异常或产生乱码。DevHub 底层统一采用 TextEncoder 与 TextDecoder 处理二进制字节流,实现 100% 汉字与特殊字符安全编解码。
Q: MD5 和 SHA-256 可以被解密吗?
A: MD5 与 SHA-256 是单向散列哈希函数(Hash Function),而非可逆的对称/非对称加密算法,数学上不可逆向解密。网上常见的所谓‘MD5解密’实际上是利用预先计算好的‘彩虹表(Rainbow Table)’进行碰撞反查。建议涉及密码存储时务必配合盐值(Salt)或使用专门的 bcrypt/argon2 算法。
Q: encodeURI 与 encodeURIComponent 有什么区别?
A: encodeURI 用于编码完整的统一资源标识符 (URI),它不会对 URI 中的语义分隔符(如 http://, /, ?, &, =)进行转义;而 encodeURIComponent 会对除了字母数字外的绝大部分标点符号都进行转义,通常用于给 URL 查询参数中的单个 key 或 value 进行安全转码。
Q: 为什么 URL 里空格有时是 %20 有时是 +?
A: %20 是 RFC 3986 的标准百分号编码;+ 是 application/x-www-form-urlencoded 表单提交的历史约定,只在查询串中代表空格。encodeURIComponent 只产出 %20,若后端按表单语义解析就需要把空格换成 +,这是接口联调最常见的坑之一。
Q: 哈希"加盐"是什么意思?还有必要吗?
A: 加盐指哈希前拼接每用户唯一的随机串,使相同密码产出不同摘要,令预计算彩虹表失效。现代建议是直接用 bcrypt/scrypt/argon2 这类自带盐、计算速度可调慢的专用密码哈希算法,而不是裸算一次 MD5/SHA256。