Thanks to visit codestin.com
Credit goes to gitcode.com

md5-cj:基于 CangJie 语言的 MD5 算法库项目

md5摘要算法的仓颉版本实现

分支2Tags0

md5-cj

介绍

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字符串和字节数组

开源协议

MIT License

参与贡献

欢迎提交Issue和Pull Request。如果您发现了bug或者有新功能建议,请在Issue中详细描述。如果您想贡献代码,请遵循以下步骤:

  1. Fork本仓库
  2. 创建您的特性分支
  3. 提交您的更改
  4. 确保通过所有测试
  5. 提交Pull Request

项目介绍

md5摘要算法的仓颉版本实现

定制我的领域