md5摘要算法的仓颉版本实现
介绍
MD5是一个用于计算消息摘要的密码散列函数库,可以将任意长度的字符串转换成一个128位(16字节)的散列值。本库提供了纯CangJie语言实现的MD5算法,支持增量更新、多种输出格式,适用于数据完整性校验、密码加密等场景。
项目特性
- 支持字符串输入的MD5计算
- 支持UTF-8编码的字符串处理
- 支持增量更新,可以分多次传入数据
- 提供多种输出格式:
- 16进制字符串(hex)
- 字节数组(array/digest)
- ArrayBuffer格式
项目计划
- v1.0.0: 基础MD5功能实现
- v1.1.0: 添加HMAC-MD5支持
- v1.2.0: 添加流式处理支持
- v2.0.0: 性能优化
项目架构
MD5库采用简单的单类设计,核心类Md5实现了标准的MD5算法。
源码目录
.
├── README.md # 项目说明文档
├── doc # 文档目录
│ ├── design.md # 设计文档
│ └── feature_api.md # API接口文档
├── src # 源码目录
│ ├── md5.cj # MD5核心实现
│ └── md5_test.cj # 单元测试
└── test # 测试代码目录
├── HLT # 高层测试
└── LLT # 低层测试
接口说明
主要类和函数接口说明,详见 API
使用说明
编译构建
cpm update
cpm build
功能示例
基础MD5计算示例
计算字符串的MD5值:
import md5.*
main() {
let md5 = Md5(true)
md5.update("Hello World")
println(md5.hex()) // 输出: b10a8db164e0754105b7a99be72e3fe5
}
增量更新示例
分多次传入数据计算MD5:
import md5.*
main() {
let md5 = Md5(true)
md5.update("The quick ")
md5.update("brown fox ")
md5.update("jumps over ")
md5.update("the lazy dog")
println(md5.hex()) // 输出: 9e107d9d372bb6826bd81d3542a419d6
}
约束与限制
- 需要CangJie编译器 v0.53.4 或更高版本
- 仅支持UTF-8编码的字符串输入
- 输出格式限于hex字符串和字节数组
开源协议
参与贡献
欢迎提交Issue和Pull Request。如果您发现了bug或者有新功能建议,请在Issue中详细描述。如果您想贡献代码,请遵循以下步骤:
- Fork本仓库
- 创建您的特性分支
- 提交您的更改
- 确保通过所有测试
- 提交Pull Request