littlebot
Published on 2025-04-15 / 0 Visits
0

【源码】基于C语言的TinyJAMBU加密算法实现项目

项目简介

本项目提供了TinyJAMBU认证加密关联数据(AEAD)算法在多种平台的实现。TinyJAMBU是NIST轻量级密码学竞赛的决赛入围算法,具有极小且快速的特点,适用于资源受限的环境,如嵌入式系统和微控制器。

项目的主要特性和功能

  1. 跨平台支持:提供多种平台的汇编代码实现,涵盖AVR5、ARMv6、ARMv6 - M、ARMv7 - M、RISC - V(32位和64位)以及Xtensa等平台,无汇编版本的平台用纯C实现。
  2. 功能扩展:除AEAD模式外,还提供哈希、HMAC、HKDF、SIV、PRNG、PBKDF2等扩展功能,不过这些实验模式的安全级别目前未知。
    • 哈希模式:基于TinyJAMBU - 256置换实现256位输出的哈希算法,采用MDPH构造。
    • HMAC模式:在哈希算法基础上以标准方式构建,抵御长度扩展攻击。
    • SIV模式:提供抗随机数重用的模式,适用于密钥包装等场景。
    • 伪随机数生成器:基于NIST Special Publication 800 - 90A Revision 1的Hash_DRBG,扩展系统随机数源的熵。
  3. 高效性:TinyJAMBU算法设计轻量,64位系统的汇编代码后端虽限制为32位寄存器操作,但仍比纯C实现有所改进。
  4. 安全性:提供128位、192位和256位版本的哈希函数,满足不同安全需求。
  5. 易用性:提供易于理解的API接口,方便集成到现有项目中。

安装使用步骤

编译安装

本项目使用cmake进行构建,需先安装cmake。

简单编译、测试和安装库的方法

bash mkdir build cd build cmake .. make make test sudo make install

使用交叉编译器构建

在调用cmake时设置CCCMAKE_C_FLAGS变量: bash mkdir build cd build CC="avr-gcc" cmake -DMINIMAL=ON -DCMAKE_C_FLAGS="-mmcu=atmega2560" .. make MINIMAL选项可抑制共享库、示例和测试程序的编译,仅构建静态库libtinyjambu_static.a,适用于嵌入式微控制器。

Arduino使用方法

将项目内容复制到Arduino草图本目录的libraries/TinyJAMBU中,重新启动Arduino IDE,在File -> Examples子菜单中查找TinyJAMBU示例。

示例代码

以下是一个简单示例,展示如何使用TinyJAMBU库进行哈希计算: ```c

include "hash.h"

include

int main() { unsigned char data[] = "Hello, World!"; unsigned char hash[32];

crypto_hash(data, sizeof(data), hash);

// 输出哈希值
for (int i = 0; i < 32; i++) {
    printf("%02x", hash[i]);
}
printf("\n");

return 0;

} ``` 实际使用中可能需根据具体需求进行修改和调整。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】