开发者安全工具指南

Free 哈希 · HMAC · AES · RSA · JWT · 密码 No signup · No data stored · Works offline

本指南涵盖的工具

Hash Generator
MD5, SHA-1, SHA-256, SHA-512 & more
HMAC Generator
HMAC-SHA256 for API and webhook signing
AES Encrypt & Decrypt
AES-128/192/256 browser-based encryption
RSA Encrypt & Decrypt
RSA-OAEP 2048/4096-bit key pairs
JWT Decoder
Inspect header, payload and expiry
Password Generator
Cryptographically secure random passwords
Base64 Encoder
Encode binary data and key material
URL Encoder
Percent-encode query parameters
Last updated: March 2026  ·  v1.0
Quick Answer
每位开发者都需要的关键密码学工具有哪些?

开发者经常需要哈希、签名、加密和令牌检查。最重要的 5 条规则:

  1. 切勿将 MD5 或 SHA-1 用于安全用途——它们在密码学上已被攻破。至少使用 SHA-256。
  2. 切勿用 SHA-256 存储密码——它太快了。请使用 bcrypt、scrypt 或 Argon2。
  3. HMAC ≠ 哈希——HMAC 需要一个密钥,普通哈希无法证明真实性。
  4. 静态数据用 AES,密钥交换用 RSA——切勿用 RSA 加密大批量数据(比 AES 慢 1000 倍)。
  5. JWT 载荷默认不加密——它们只是被签名;未使用 JWE 时切勿在 JWT 中放置敏感数据。

安全操作——对载荷做哈希、为 API 请求签名、加密敏感数据、解码 JWT——都是开发者的日常工作。拥有快速、可靠的浏览器端工具来完成这些操作,意味着你无需搭建本地环境或将敏感数据上传到未知服务器,就能检查和验证各种安全产物。

哈希:MD5 vs SHA-1 vs SHA-256 vs SHA-512

哈希函数接受任意大小的输入,产生固定大小的输出(摘要)。相同输入总是产生相同输出;哪怕只改动一个字符,也会产生完全不同的摘要。

MD5 产生 128 位(32 个十六进制字符)的摘要。它很快,但在密码学上已被攻破。仅在不要求抗碰撞的校验和场景使用 MD5,例如检测文件意外损坏或用作缓存失效键。

SHA-1 产生 160 位的摘要。自 2017 年起同样被认为已被攻破(SHAttered 攻击)。在新的安全关键代码中应避免使用 SHA-1。

SHA-256(SHA-2 家族的一员)产生 256 位的摘要,是当前安全关键哈希的标准。用于 TLS 证书、代码签名和大多数现代认证系统。

SHA-512 产生 512 位的摘要。在 64 位处理器上,由于其内部字长与处理器的原生位宽匹配,SHA-512 通常比 SHA-256 更快。

HMAC:为 API 请求和 webhook 签名

HMAC(基于哈希的消息认证码)在哈希中加入一个密钥,产生一个既能证明内容、又能证明发送者身份的签名。

AWS Signature v4 使用 HMAC-SHA256 为每个 API 请求签名。该签名涵盖 HTTP 方法、URL、请求头和请求体哈希,防止传输过程中的任何篡改。

Stripe 和 GitHub 的 webhook 会包含一个 X-Stripe-SignatureX-Hub-Signature-256 请求头,其中是请求体的 HMAC-SHA256。你的服务器用 webhook 密钥重新计算它,并拒绝签名不匹配的请求。

JWT HS256 使用 HMAC-SHA256 为令牌的头部和载荷签名。开发和调试时,用我们的 HMAC 生成器来计算和验证 HMAC 签名。

AES vs RSA:对称加密与非对称加密

AES(对称)使用相同的密钥加密和解密。它极快——现代 CPU 有针对 AES 的硬件指令,可达到每秒数 GB 的吞吐。AES-256 用于加密静态数据:数据库字段、文件加密、磁盘加密。

RSA(非对称)用公钥加密、用对应的私钥解密。RSA 比 AES 慢得多(大批量数据慢 1000 倍以上),因此通常只用来加密一个小的 AES 密钥,再由该密钥加密真正的数据(混合加密,正如 TLS 所采用的)。

填充很重要:切勿使用不带填充的原始 RSA。RSA-OAEP(最优非对称加密填充)是安全标准。我们的 RSA 加解密工具只使用 RSA-OAEP。

JWT 令牌:结构、声明与常见问题

JWT(JSON Web Token)由三个以点号分隔、经 Base64url 编码的部分组成:头部、载荷和签名。

头部(Header):指定算法。{"alg": "HS256", "typ": "JWT"} 表示 HMAC-SHA256 签名。RS256 表示 RSA-SHA256。

载荷(Payload):包含声明——标准声明有 sub(用户 ID)、iss(签发方)、exp(过期 Unix 时间戳)和 iat(签发时间)。

none 算法漏洞:有些 JWT 库会接受 {"alg": "none"},从而完全绕过签名验证。请始终在服务器端校验算法,并拒绝算法不符合预期的令牌。

JWT 默认不加密:标准的 JWT 只被签名而未加密——任何截获它的人都能读取载荷。除非使用 JWE,否则切勿在 JWT 载荷中放置敏感数据。

关于开发者安全工具的常见问题

可以用 SHA-256 来做密码哈希吗?

不行。SHA-256 是通用的快速哈希,这让暴力破解密码变得容易。请改用 bcrypt、scrypt 或 Argon2——它们被设计为慢速且高内存消耗。我们的 密码生成器可生成强密码;存储时应在你的服务器上使用 bcrypt/Argon2。

编码和加密有什么区别?

编码(如 Base64)为兼容性而转换数据——无需密钥即可还原。加密(如 AES)保护机密性——只有用正确的密钥才能还原。切勿把 Base64 当作安全手段。

如何检查一个 JWT 是否已过期?

使用我们的 JWT 解码器。粘贴令牌,工具会读取 exp 声明并显示过期日期,同时给出清晰的「已过期/有效」指示。

在浏览器里生成密码安全吗?

安全,只要使用 crypto.getRandomValues(),正是我们的 密码生成器所采用的。它是浏览器的 CSPRNG,与操作系统用于生成密钥的熵源相同。

该用多大的 AES 密钥?

所有新应用都用 AES-256。AES-128 在技术上对已知攻击是安全的,但 AES-256 提供了更大的余量。在现代硬件上,两者的性能差异可以忽略不计。