Add firmware SHA hash tool
This commit is contained in:
+21
-6
@@ -2,7 +2,7 @@
|
||||
|
||||
一个匿名访问、自托管的浏览器本地工具箱。支持多人同时使用;除全局导航顺序外,文本、密钥、文件、图片和计算结果均只存在于各自浏览器中,不会发送到服务端。
|
||||
|
||||
当前应用版本:`0.0.5`。
|
||||
当前应用版本:`0.0.6`。
|
||||
|
||||
## 内置工具
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
- Base64 与 Base64 URL 编码、解码,解码结果支持 UTF-8、连续 Hex 和代码字节数组
|
||||
- AES-128-CMAC(RFC 4493)
|
||||
- CRC-8/16/32/64 预设与自定义参数,支持 BIN 和多 block Intel HEX
|
||||
- 固件 SHA-256 / SHA-512,支持 Intel HEX 有效数据和带地址/长度的 Block 校验头
|
||||
- RSA 2048/3072/4096 位密钥对,导出 PEM,以及可分别复制的 N/E Hex 或代码字节数组
|
||||
- 密码学安全随机数,支持连续 Hex、空格 Hex 和代码字节数组
|
||||
- JSON 格式化、压缩、校验和语法着色
|
||||
@@ -55,7 +56,7 @@ CHANGELOG.md 版本变更、修复和验证记录
|
||||
## 多人使用与状态边界
|
||||
|
||||
- 每个浏览器标签页拥有独立的 Vue 组件状态、文件对象、图像对象和 Web Worker。不同用户、浏览器或标签页不会共享工具输入与结果。
|
||||
- CRC、RSA、AES-CMAC、随机数、PNG/ICO、编码转换和格式化都在浏览器中执行;服务端没有工具计算接口。
|
||||
- CRC、固件 Hash、RSA、AES-CMAC、随机数、PNG/ICO、编码转换和格式化都在浏览器中执行;服务端没有工具计算接口。
|
||||
- `/setting` 保存的是所有访问者共享的导航配置。并发保存没有版本冲突合并,最后完成原子替换的请求生效。
|
||||
- 原子替换保证读取者看到完整的旧配置或新配置,不会看到写到一半的 JSON;它不保证保留多个用户各自的排序修改。
|
||||
- 已打开的页面不会实时接收其他用户保存的新顺序,刷新或重新打开后才会读取。
|
||||
@@ -68,8 +69,9 @@ CHANGELOG.md 版本变更、修复和验证记录
|
||||
| 功能 | 当前限制 | 超限行为 |
|
||||
| --- | --- | --- |
|
||||
| CRC 固件文件 | 最大 64 MiB | 选择时拒绝,不保留旧文件结果 |
|
||||
| Intel HEX 数据记录 | 最多 500,000 条 | Worker 停止解析并显示错误 |
|
||||
| Intel HEX 非空记录 | 最多 500,000 条 | Worker 停止解析并显示错误 |
|
||||
| Intel HEX 数据块 | 最多 1,024 个 block | Worker 停止解析并显示错误 |
|
||||
| 固件 Hash 文件及有效数据 | 文件最大 64 MiB,有效数据最大 64 MiB | 选择或计算时拒绝 |
|
||||
| PNG 压缩文件 | 最大 32 MiB | 创建预览前拒绝 |
|
||||
| PNG 尺寸 | 单边最大 16,384 像素,总计最大 32,000,000 像素 | 浏览器解码前拒绝 |
|
||||
| 安全随机数 | 每次 1 至 65,536 字节 | 拒绝无效长度 |
|
||||
@@ -173,10 +175,10 @@ docker compose restart web-tools
|
||||
|
||||
## 离线镜像
|
||||
|
||||
若交付目录包含 `personal-web-tools-0.0.5-amd64.tar`,可直接导入:
|
||||
若交付目录包含 `personal-web-tools-0.0.6-amd64.tar`,可直接导入:
|
||||
|
||||
```bash
|
||||
docker load -i personal-web-tools-0.0.5-amd64.tar
|
||||
docker load -i personal-web-tools-0.0.6-amd64.tar
|
||||
docker compose up -d --no-build
|
||||
```
|
||||
|
||||
@@ -220,10 +222,23 @@ npm audit --audit-level=low
|
||||
|
||||
`npm run check` 会依次运行全部 Vitest 测试、TypeScript/Vue 类型检查和生产构建。服务端测试使用随机本地端口验证 SPA 直达路由、静态资源 404、导航 API、请求大小限制及跨站写入拦截。
|
||||
|
||||
自动化测试还覆盖标准算法向量、Base64 规范性、Intel HEX 记录与 block 边界、PNG 头部与像素限制、导航排序纯函数、目录/图标/懒加载组件一致性,以及原子写入失败后的临时文件清理。
|
||||
自动化测试还覆盖标准算法向量、Base64 规范性、Intel HEX 记录与 block 边界、固件 Hash 与大小端 Block 头向量、PNG 头部与像素限制、导航排序纯函数、目录/图标/懒加载组件一致性,以及原子写入失败后的临时文件清理。
|
||||
|
||||
## 增加工具
|
||||
|
||||
### 固件 Hash 固定语义
|
||||
|
||||
固件 Hash 与 CRC 共用经过校验的 Intel HEX 解析器,但使用独立纯逻辑、Worker 和 Vue 页面。解析器处理扩展段/线性地址,将数据按 32 位绝对地址排序,合并连续记录,去重内容一致的重叠记录,并拒绝冲突或越过 `0xFFFFFFFF` 的数据。记录文本、记录校验和、EOF 和启动地址不参与 Hash。
|
||||
|
||||
“有效数据”模式的总输入为所有 block 数据按地址升序直接拼接,不填充地址空洞。“Block 校验头”模式在每个 block 前加入 8 个二进制字节:
|
||||
|
||||
```text
|
||||
uint32 startAddress
|
||||
uint32 dataLength
|
||||
```
|
||||
|
||||
默认使用 Big Endian,可以显式切换 Little Endian。两个字段始终为 4 字节;`dataLength` 只表示该 block 的有效数据字节数,不包含 8 字节校验头。总输入严格为 `Header1 || Data1 || Header2 || Data2 ...`,同时输出总 SHA-256/SHA-512 和每个 block 的独立摘要。不得把固定宽度 Hex 文本误作为 ASCII 字符加入 Hash,也不得隐式使用运行设备的原生端序。
|
||||
|
||||
### 1. 先定义稳定标识
|
||||
|
||||
为工具选择永久的 kebab-case `id`,例如 `url-encode`。已发布工具的 `id` 不应修改,因为路由、懒加载映射和用户保存的导航配置都依赖它。
|
||||
|
||||
Reference in New Issue
Block a user