先对齐字节,
再对齐结果。
同一段“看起来一样”的内容,可能对应不同的字节。CryptoKit 把输入、规则与结果摊开,帮助你完成一次可复核的编码转换或密码学联调。
第一次使用,从一个示例开始
加载测试数据
打开工具,点击“加载示例”。示例原文和密钥仅用于开发测试。
确认规则与编码
明确算法、输入编码、密钥格式和输出编码,再执行本地计算。
检查,再带走结果
核对状态与字节长度,主动复制或下载。更改输入后重新执行。
七类工作,专注完成
编码转换
在文本与字节的不同表示之间转换。中文、Emoji、UTF-16 代理对与 URL 中的空格、加号,均按明确语义处理。
哈希摘要
计算 UTF-8 文本或文件真实字节的摘要。支持多算法对照、输出编码切换,以及带进度和取消的文件增量计算。
HMAC 消息认证
用相同的秘密密钥计算或验证消息认证码。先明确密钥是 UTF-8 文本、Hex 字节还是 Base64 字节,再对齐摘要算法。
RSA 密钥与密码学
本地生成 2048 / 3072 / 4096 位公私钥,分别复制或下载。按用途进行 OAEP 加解密、PSS / PKCS#1 v1.5 签名,以及 PEM / JWK 转换。
JWT 解析与验签
分别查看结构、签名、有效时间与 Claims。主动选择预期的 HS256 / RS256 / PS256;解析成功不会被标记为可信。
UUID 生成与检查
使用密码学安全随机源生成 v4 / v7,可批量生成最多 1000 个,切换格式并下载。检查已有 UUID 的版本与 v7 时间戳。
API 签名调试
通过 JSON、参数表或原始字符串输入,显式设定筛选、排序、分隔符、转义和换行。逐步核对最终原文与 UTF-8 Hex,再执行 HMAC / RSA 签名或验签。
文本相同,不一定字节相同
CryptoKit 的文本默认按 UTF-8 编码;输入不会自动去除空格或统一换行。API 签名工作台的换行规则由你显式选择,其他工具则保留原始输入语义。密钥编码尤其需要两端一致:
| 输入 | 解释方式 | 实际字节(Hex) | 字节数 |
|---|---|---|---|
中 | UTF-8 文本 | e4 b8 ad | 3 |
🚀 | UTF-8 文本 | f0 9f 9a 80 | 4 |
6162 | UTF-8 密钥文本 | 36 31 36 32 | 4 |
6162 | Hex 密钥字节 | 61 62 | 2 |
空格、加号与百分号
URL 组件编码把空格写成 %20,字面加号写成 %2B。表单编码则用 + 表示空格。对接时先选对语义。
LF 与 CRLF
LF 对应字节 0a;CRLF 对应 0d 0a。换行、尾部空格和不可见字符都会影响摘要与签名。
签名对不上,沿着过程排查
- 先看参与了哪些字段。排除签名字段、过滤空字符串与处理 null 是不同规则。JSON 中重复的名称会报错,不会悄悄覆盖。
- 再看最终原文的 Hex。默认排序是参数名的 UTF-8 字节升序,与系统语言无关。前后缀、分隔符和转义都会改变实际输入。
- 确认算法与密钥真实字节。HMAC-SHA256 与 SHA-256 摘要不同;RSA-PSS 与 Java 常见的 SHA256withRSA 也不能混用。
- 最后核对签名的输出编码。Hex、Base64 与 Base64URL 可以表示同一份签名字节。先解码,再验证;普通文本比较不能代替验签。
app_id=demo_app&nonce=test-001×tamp=1700000000HMAC-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 不请求真实支付接口,也不签发证书。
本地处理,主动保存需要的结果
RSA 公钥和私钥可分别下载。私钥默认隐藏,下载的 PKCS#8 / JWK 私钥未加密,请妥善保管。生产环境的重要密钥宜在受控环境或 KMS/HSM 中管理。
主题与常用工具标识会保存在当前浏览器。清除站点数据会重置这两项偏好,不会从本站恢复历史输入。详见隐私与安全说明。
进一步核对标准
算法行为可对照原始规范;工作台中明确展示的参数与实际字节,始终是联调依据。