Crypto 分包 · Design Deck v1 · 组装 Lynx

国密 / 编码 / 动态口令 · 视觉稿 v1

依据 Cipher《crypto-visual-spec-v1》(7 页规格)与 Sol《design-language-v1》(token)。画布 750rpx:1rpx = 0.5pt = 0.5px,44pt = 88rpx;稿内所有标注用 rpx。 11 屏 / 16 框:浅色 13 框(S8、S10 各出双态),深色 3 框(S1 / S8 / S11)。

无「加密 / 签名」主按钮 输入即算 300ms 9 → 1 「更多选项」收成「参数」折叠 4653 行 4 个死页不出功能稿 64 / 88 segmented 视觉高 / 命中区 28 SM2 签名 128 hex 走 F 档 3 + 1 SM9 灰显,验签区禁用
brand #0E6E75 brand-tint sunken line ink-1 ink-3 success warn danger 深色值见 S1-D / S8-D / S11-D
S1动态口令 · 单令牌 浅色 · packages/crypto/pages/totp
9:41
工作邮箱
123456
18 秒后刷新点击复制
说明·密钥只存在本机,卸载即丢失
  • 码 64rpx 等宽、3+3 分组(只在 /^\d{6}$/ 成立时),字距 6rpx
  • 进度 = 剩余/30(反向修正现状 T-3),1000ms linear
  • 管理动作退出首层:⋯ 热区 88;未点头前降级为右上角 cap 文字胶囊
  • 单令牌时下方留白是预期结果,不加装饰填充
S2动态口令 · 多令牌 浅色 · packages/crypto/pages/totp
9:41
工作邮箱
123456
18 秒后刷新点击复制
其他令牌 (2)
个人账号 654 321
测试环境 111 222
说明·密钥只存在本机,卸载即丢失
  • 行高 ≥104,名称 32 / 码 44 mono 右对齐
  • 行底 2rpx 细进度:同一 30 秒窗口,各卡共享同一值(零 JS 改动)
  • 区块标题 fs-h2 40 + 刻度线,每屏 ≤2 条
S3动态口令 · 空态 浅色 · packages/crypto/pages/totp
9:41
还没有添加令牌
密钥只保存在本机,卸载即丢失
  • lock 96rpx + ink-4;标题 36 / 说明 28
  • 主按钮进空态(现状在另一个区块里)
  • 空态不渲染任何结果行、不闪骨架
S4动态口令 · 错误降级 浅色 · packages/crypto/pages/totp
9:41
工作邮箱
错误
18 秒后刷新复制不可用
该令牌无法生成验证码
请检查密钥格式
说明·密钥只存在本机,卸载即丢失
  • 非 6 位码:不加分组、不上 64rpx,用 fs-body 32 + danger 原样输出
  • 复制热区 88 置 disabled(ink-4),不给「点了没反应」
  • inline notice 常驻,不用 toast;不动 generateTOTP
S5编码转换 · 有输入 浅色 · packages/crypto/pages/encoding
9:41
随身工具箱5 / 1000
编码
Base6420 字符
6ZqP6Lqr5bel5YW3566x
URL54 字符
%E9%9A%8F%E8%BA%AB%E5%B7%A5%E5%85%B7%E7%AE%B1
HTML40 字符
随身工具箱
摘要 · 不可逆单向
MD532 字节
0c3ed7a76fd0ca438690acecfd146820
SHA-140 字节
5a852eac88fd8bc98978b5a5db6f91d4e2d8f441
SHA-25664 字节展开
8fde8d3ed650bee1d262697813bf52af8a54f17e11ea26d2868f00323367f070
SHA-512128 字节展开
e3ed4f55c042e8ab403041ce1ddd00980c882e9f491b5f4a72102d3e33343845e496e7b169f214a336a6dd39a0791433e9d5e444aa42719c10e095c21f763098
全部在本机完成,输入不上传
  • 7 条等权 → 两组 3 / 4;摘要带「单向」pill
  • 值 28rpx 等宽;短值(≤16 字符)才 44rpx;长值 2 行 + 展开,不 ellipsis
  • 偏差(请规格同步):96rpx 标签列 + 88rpx 复制只剩 239px,MD5 会断成 28+4 的孤字;本稿把标签移到值上方,值通栏 343px → 32/40 字符可单行
  • 复制 emoji → copy glyph 48,热区 88
  • 示例值均为真实计算(UTF-8 / 5 字符 15 字节)
  • 解码 tab 是二期,本期是否灰显待拍板(§9-4)
S6编码转换 · 空态 浅色 · packages/crypto/pages/encoding
9:41
输入文本…0 / 1000
输入文本后自动计算
全部在本机完成,不上传
  • terminal 96rpx + ink-4;不显示任何空白结果行
  • 无整页骨架、无 showLoading
  • 页脚承诺行保留,24rpx ink-3
S7国密 SM2 · 签名 浅色 · packages/crypto/pages/gm
9:41
签名 验签
密钥·已生成 · 私钥 64 hex
待签名消息UTF-8
hello
签名结果已签名
128 位 hexHEX · 大写
76bb56410da6fae96373a09553d4b2d355af4a9952ee31f74dbef2955151ef39263d2c03e2fbf837ab04bf9a1ea74f93807d10966b09d15e06a0c7dac9180801
128 字节展开全文
参数·UTF-8 · HEX 大写
说明·SM2 是什么、什么时候用
  • 没有主按钮:输入即算(300ms 防抖),计算中在标题右侧出 16rpx 呼吸点
  • 签名 128 hex → F 档 28rpx 2 行 + 展开;44rpx 只给单值
  • 参数 9 → 1 折叠,收起态必须带摘要(不是光一个 ▼)
  • 密钥折叠默认展开(每次进页要重新生成),本屏展示收起摘要态
S8国密 SM2 · 验签 · 通过 浅色 · packages/crypto/pages/gm
9:41
签名 验签
验证消息UTF-8
hello
公钥HEX · 65 字节
048b3429a901d6bca43bcec1ce7679f5d66c82d0b95e785e32a2f296d9613fef8b9b9d9844d4cd653a0210c541cb54d0a0e31e256a2eecb144f76165889b4743c3
签名HEX · 128 位
76bb56410da6fae96373a09553d4b2d355af4a9952ee31f74dbef2955151ef39263d2c03e2fbf837ab04bf9a1ea74f93807d10966b09d15e06a0c7dac9180801
结果通过
签名验证通过
消息与签名匹配 · 签名 128 位 hex
  • 结果区常驻三态:待输入(ink-4)→ 计算中(呼吸点)→ 通过 / 失败
  • 用 pill + 文案,不用 ✓ / ✗ emoji(Sol §6.3)
  • 修 wx:class 假色(gm.wxml:971 是 SM9 段)后,这段颜色才真的生效
S8国密 SM2 · 验签 · 失败 浅色 · packages/crypto/pages/gm
9:41
签名 验签
验证消息UTF-8
hello
公钥HEX · 65 字节
048b3429a901d6bca43bcec1ce7679f5d66c82d0b95e785e32a2f296d9613fef8b9b9d9844d4cd653a0210c541cb54d0a0e31e256a2eecb144f76165889b4743c3
签名96 位 · 不是 128
76bb56410da6fae96373a09553d4b2d355af4a9952ee31f74dbef2955151ef39263d2c03e2fbf837ab04bf9a1e
结果失败
签名验证失败
签名格式不是 128 位 hex:当前 96 位。请检查是否被截断或换行。
  • 失败必须给一句原因,不能只写「失败」
  • 输入错误也要在字段 label 处标出来(96 位 · 不是 128)
  • 通过 / 失败双态同一屏出,是「这个工具可不可信」的全部
S9国密 SM3 浅色 · packages/crypto/pages/gm
9:41
输入
abc
结果SM3 · 256 位
十六进制(主读数)HEX · 大写
66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0
64 字节
Base64(次读数)44 字符
Zsfw9GLu7dnR8tRr3BDk4kFnxIdc8veiKX2gK49LqOA=
参数·UTF-8 · HEX 大写
说明·SM3 是什么、什么时候用
  • HEX 是主读数、Base64 降一级(现状两条等权)
  • 「清空」改文字按钮,热区 88(不是 15pt 迷你按钮)
  • SM3 无 L2;参数摘要「UTF-8 · HEX 大写」
  • 示例:SM3("abc") 标准向量
S10国密 SM4 · 加密 浅色 · packages/crypto/pages/gm
9:41
加密 解密
密钥
0123456789abcdeffedcba9876543210
待加密数据UTF-8
hello
密文已加密
十六进制(主读数)HEX · 大写
db0669bd841e5450ec1652ecd42b6d60
16 字节 · 输入 5 字节(PKCS#7 补齐)
Base64(次读数)24 字符
2wZpvYQeVFDsFlLs1CttYA==
参数·PKCS#7 · HEX · 大写
  • 密钥行「生成」为文字按钮 88 热区,密钥值 32 hex 单行 + word-break
  • 密文主读数 + 字节数;输入 5 → 输出 16 顺手把填充讲清楚
  • 加密 / 解密两态各自完整,字段不共用(现状本就分开)
S10国密 SM4 · 解密 浅色 · packages/crypto/pages/gm
9:41
加密 解密
密钥
0123456789abcdeffedcba9876543210
待解密密文HEX · 16 字节
db0669bd841e5450ec1652ecd42b6d60
明文已解密
UTF-8(主读数)HEX 输入
hello
5 字节 · 与输入 16 字节对照
参数·PKCS#7 · HEX · 大写
  • 明文 ≤16 字符 → P 档 44rpx 等宽;这是「每屏必有一个主读数」的落点
  • 密文输入走 F 档 28rpx,字段 label 标出字节数
  • 解密结果是明文,复制 glyph 不可省
S11国密 SM9 · 不可用 浅色 · packages/crypto/pages/gm
9:41
SM9 当前为占位实现
加密 / 签名结果为随机字节,验签只比较长度,不校验签名内容。请勿用于任何安全判断。
签名 验签
验证消息UTF-8
hello
签名HEX · 128 位
b3f1a0c25d7e44916bd0f8a3c7165e2d94ab03f7c1852e6d0b9f4a7c3e215d8f6a0b4c9e172d35f8a6b20c4d91e7f3a85c6b0d2e94f17a3c85b6d0e29f4713a8c5b
结果不可用
验签:不可用
本版本不提供验签结论。
示意 · 签名页签
签名结果演示输出
b3f1a0c25d7e44916bd0f8a3c7165e2d94ab03f7c1852e6d0b9f4a7c3e215d8f
随机字节,不校验128 字节
  • L1 3 + 1 灰显:拍板后裁成隐藏(A)或下线(C)都只删一项
  • 验签区禁用、常驻 warn notice;页面上绝不出现「验证通过」
  • 签名 / 加密仍可点,结果必须带「演示输出」pill
  • 根因:gm.js:983-995 只判 length === 128,任意 256 位 hex 都「通过」
S1动态口令 · 单令牌 深色 · packages/crypto/pages/totp
9:41
工作邮箱
123456
18 秒后刷新点击复制
说明·密钥只存在本机,卸载即丢失
  • 深色下只靠 1rpx 描边分层,零阴影
  • brand 换 #3FA8AF(on surface 6.1);进度条与码同步提亮
  • 前提:app.json 补 darkmode:true,否则这套永远不生效
S8国密 SM2 · 验签 · 通过 深色 · packages/crypto/pages/gm
9:41
签名 验签
验证消息UTF-8
hello
公钥HEX · 65 字节
048b3429a901d6bca43bcec1ce7679f5d66c82d0b95e785e32a2f296d9613fef8b9b9d9844d4cd653a0210c541cb54d0a0e31e256a2eecb144f76165889b4743c3
签名HEX · 128 位
76bb56410da6fae96373a09553d4b2d355af4a9952ee31f74dbef2955151ef39263d2c03e2fbf837ab04bf9a1ea74f93807d10966b09d15e06a0c7dac9180801
结果通过
签名验证通过
消息与签名匹配 · 签名 128 位 hex
  • success 用 #4ECB8A / 底 #0F2A20(8.4 : 1,浅色值直接搬会刺眼)
  • 深色下 hint 与输入框同为 sunken,靠描边分界
  • 零阴影;吸顶栏用 line 下沿而不是投影
S11国密 SM9 · 不可用 深色 · packages/crypto/pages/gm
9:41
SM9 当前为占位实现
加密 / 签名结果为随机字节,验签只比较长度,不校验签名内容。请勿用于任何安全判断。
签名 验签
验证消息UTF-8
hello
签名HEX · 128 位
b3f1a0c25d7e44916bd0f8a3c7165e2d94ab03f7c1852e6d0b9f4a7c3e215d8f6a0b4c9e172d35f8a6b20c4d91e7f3a85c6b0d2e94f17a3c85b6d0e29f4713a8c5b
结果不可用
验签:不可用
本版本不提供验签结论。
示意 · 签名页签
签名结果演示输出
b3f1a0c25d7e44916bd0f8a3c7165e2d94ab03f7c1852e6d0b9f4a7c3e215d8f
随机字节,不校验128 字节
  • warn 深色 #E0A24A / 底 #2A2113(7.1 : 1)——这是深色最容易刺眼的一屏
  • 禁用区 ink-4 在深色下不降透明度,只换色
  • 「验证通过」四个字在本稿任何一屏都不存在