GETTING STARTED

先对齐字节,
再对齐结果。

同一段“看起来一样”的内容,可能对应不同的字节。CryptoKit 把输入、规则与结果摊开,帮助你完成一次可复核的编码转换或密码学联调。

第一次使用,从一个示例开始

1

加载测试数据

打开工具,点击“加载示例”。示例原文和密钥仅用于开发测试。

2

确认规则与编码

明确算法、输入编码、密钥格式和输出编码,再执行本地计算。

3

检查,再带走结果

核对状态与字节长度,主动复制或下载。更改输入后重新执行。

七类工作,专注完成

01

编码转换

在文本与字节的不同表示之间转换。中文、Emoji、UTF-16 代理对与 URL 中的空格、加号,均按明确语义处理。

02

哈希摘要

计算 UTF-8 文本或文件真实字节的摘要。支持多算法对照、输出编码切换,以及带进度和取消的文件增量计算。

03

HMAC 消息认证

用相同的秘密密钥计算或验证消息认证码。先明确密钥是 UTF-8 文本、Hex 字节还是 Base64 字节,再对齐摘要算法。

04

RSA 密钥与密码学

本地生成 2048 / 3072 / 4096 位公私钥,分别复制或下载。按用途进行 OAEP 加解密、PSS / PKCS#1 v1.5 签名,以及 PEM / JWK 转换。

05

JWT 解析与验签

分别查看结构、签名、有效时间与 Claims。主动选择预期的 HS256 / RS256 / PS256;解析成功不会被标记为可信。

06

UUID 生成与检查

使用密码学安全随机源生成 v4 / v7,可批量生成最多 1000 个,切换格式并下载。检查已有 UUID 的版本与 v7 时间戳。

07

API 签名调试

通过 JSON、参数表或原始字符串输入,显式设定筛选、排序、分隔符、转义和换行。逐步核对最终原文与 UTF-8 Hex,再执行 HMAC / RSA 签名或验签。

文本相同,不一定字节相同

CryptoKit 的文本默认按 UTF-8 编码;输入不会自动去除空格或统一换行。API 签名工作台的换行规则由你显式选择,其他工具则保留原始输入语义。密钥编码尤其需要两端一致:

输入解释方式实际字节(Hex)字节数
中UTF-8 文本e4 b8 ad3
🚀UTF-8 文本f0 9f 9a 804
6162UTF-8 密钥文本36 31 36 324
6162Hex 密钥字节61 622

空格、加号与百分号

URL 组件编码把空格写成 %20,字面加号写成 %2B。表单编码则用 + 表示空格。对接时先选对语义。

LF 与 CRLF

LF 对应字节 0a;CRLF 对应 0d 0a。换行、尾部空格和不可见字符都会影响摘要与签名。

签名对不上,沿着过程排查

  1. 先看参与了哪些字段。排除签名字段、过滤空字符串与处理 null 是不同规则。JSON 中重复的名称会报错,不会悄悄覆盖。
  2. 再看最终原文的 Hex。默认排序是参数名的 UTF-8 字节升序,与系统语言无关。前后缀、分隔符和转义都会改变实际输入。
  3. 确认算法与密钥真实字节。HMAC-SHA256 与 SHA-256 摘要不同;RSA-PSS 与 Java 常见的 SHA256withRSA 也不能混用。
  4. 最后核对签名的输出编码。Hex、Base64 与 Base64URL 可以表示同一份签名字节。先解码,再验证;普通文本比较不能代替验签。
可复现的 HMAC 示例UTF-8 · 51 bytes
最终待签名原文
app_id=demo_app&nonce=test-001&timestamp=1700000000
HMAC-SHA256 · 小写 Hex
020f6c15465ad073c9d9fbf6ceb635b050115804aac3553f80159a0b5d075d54

工作台的“加载示例”使用固定非生产测试密钥,并附 Java 与 JavaScript 对照代码。不会将你正在使用的密钥写入示例。

打开示例并逐步检查

选择算法,也要确认用途

你要完成的工作应明确的选择
转换内容表示Base64、Unicode、URL 是编码,不提供保密性。
计算内容摘要通常选择 SHA-256。MD5 / SHA-1 仅保留给兼容场景,不用于新安全设计。
使用共享秘密认证消息HMAC-SHA256 / SHA512;发送方与验证方使用相同秘密字节。
RSA 加密短消息RSA-OAEP + SHA-256;2048 位密钥最多处理 190 字节明文。
RSA 数字签名PSS 的摘要、MGF1 和盐长度应匹配;PKCS#1 v1.5 对应本工具的 RSA-SHA256。
判断 JWT 是否满足条件分别验证签名、exp / nbf、Issuer / Audience;解析成功仅表示结构可读。

已有协议应按它明确规定的算法和格式联调;若要设计新的生产协议,还需单独评审密钥管理、重放防护、权限与信任关系。CryptoKit 不请求真实支付接口,也不签发证书。

本地处理,主动保存需要的结果

输入只用于当前页面的本地计算
原文、文件、Token 与密钥不会通过业务接口上传,也不会自动保存。刷新页面后请重新输入;需要保留的结果应主动下载。

RSA 公钥和私钥可分别下载。私钥默认隐藏,下载的 PKCS#8 / JWK 私钥未加密,请妥善保管。生产环境的重要密钥宜在受控环境或 KMS/HSM 中管理。

主题与常用工具标识会保存在当前浏览器。清除站点数据会重置这两项偏好,不会从本站恢复历史输入。详见隐私与安全说明。

进一步核对标准

算法行为可对照原始规范;工作台中明确展示的参数与实际字节,始终是联调依据。