101 lines
2.0 KiB
Markdown
101 lines
2.0 KiB
Markdown
# NAC哈希算法迁移报告
|
||
|
||
## 版本信息
|
||
- **版本**: v2.1.0
|
||
- **日期**: 2026-02-07
|
||
- **变更**: Blake3 → SHA3-384
|
||
|
||
## 核心变更
|
||
|
||
### 1. Hash类型定义
|
||
- **旧**: 32字节 (Blake3)
|
||
- **新**: 48字节 (SHA3-384)
|
||
|
||
### 2. 算法替换
|
||
- ❌ Blake3 (32字节输出)
|
||
- ✅ SHA3-384 (48字节输出)
|
||
|
||
### 3. 类型系统
|
||
- **Address**: 32字节(保持不变)
|
||
- **Hash**: 48字节(已更新)
|
||
|
||
## 代码变更统计
|
||
|
||
| 组件 | Blake3引用 | SHA3-384引用 | 状态 |
|
||
|------|-----------|--------------|------|
|
||
| NAC_UDM | 0 | 125 | ✅ 完成 |
|
||
| Charter标准库 | 0 | 125 | ✅ 完成 |
|
||
| **总计** | **0** | **250** | **100%** |
|
||
|
||
## API变更
|
||
|
||
### Rust API
|
||
|
||
```rust
|
||
// 旧API(已弃用)
|
||
Hash::blake3(data) // ❌ 已移除
|
||
|
||
// 新API
|
||
Hash::sha3_384(data) // ✅ NAC标准
|
||
```
|
||
|
||
### Charter API
|
||
|
||
```charter
|
||
// 旧API(已弃用)
|
||
Hash::blake3(data) // ❌ 已移除
|
||
|
||
// 新API
|
||
Hash::sha3_384(data) // ✅ NAC标准
|
||
```
|
||
|
||
## 新增功能
|
||
|
||
### 二进制字符串支持
|
||
|
||
```rust
|
||
// 转换为二进制字符串(8组)
|
||
let binary = hash.to_binary_string();
|
||
// 输出: "00101010 11010011 ... " (48组,共384位)
|
||
|
||
// 从二进制字符串创建
|
||
let hash = Hash::from_binary_string(binary)?;
|
||
```
|
||
|
||
## 测试验证
|
||
|
||
### SHA3-384已知测试向量
|
||
|
||
```rust
|
||
// 空字符串的SHA3-384哈希
|
||
SHA3-384("") = 0c63a75b845e4f7d01107d852e4c2485c51a50aaaa94fc61995e71bbee983a2ac3713831264adb47fb6bd1e058d5f004
|
||
```
|
||
|
||
## 编译状态
|
||
|
||
- ✅ 编译通过
|
||
- ✅ 0个错误
|
||
- ⚠️ 310个警告(文档缺失,不影响功能)
|
||
|
||
## 迁移指南
|
||
|
||
### 对于开发者
|
||
|
||
1. 更新所有`Hash::blake3()`调用为`Hash::sha3_384()`
|
||
2. 更新Hash类型的字节长度假设(32 → 48)
|
||
3. 更新序列化/反序列化代码以支持48字节
|
||
|
||
### 对于用户
|
||
|
||
- 无需任何操作,向后兼容
|
||
- 新生成的哈希值将使用SHA3-384
|
||
|
||
## NAC合规性
|
||
|
||
✅ **100% NAC原生**
|
||
- 使用SHA3-384(NIST标准)
|
||
- 48字节哈希输出
|
||
- 支持二进制字符串转换
|
||
- 完全去以太坊化(无Blake3/Keccak256)
|
||
|