项目简介
本项目提供了TinyJAMBU认证加密关联数据(AEAD)算法在多种平台的实现。TinyJAMBU是NIST轻量级密码学竞赛的决赛入围算法,具有极小且快速的特点,适用于资源受限的环境,如嵌入式系统和微控制器。
项目的主要特性和功能
- 跨平台支持:提供多种平台的汇编代码实现,涵盖AVR5、ARMv6、ARMv6 - M、ARMv7 - M、RISC - V(32位和64位)以及Xtensa等平台,无汇编版本的平台用纯C实现。
- 功能扩展:除AEAD模式外,还提供哈希、HMAC、HKDF、SIV、PRNG、PBKDF2等扩展功能,不过这些实验模式的安全级别目前未知。
- 哈希模式:基于TinyJAMBU - 256置换实现256位输出的哈希算法,采用MDPH构造。
- HMAC模式:在哈希算法基础上以标准方式构建,抵御长度扩展攻击。
- SIV模式:提供抗随机数重用的模式,适用于密钥包装等场景。
- 伪随机数生成器:基于NIST Special Publication 800 - 90A Revision 1的Hash_DRBG,扩展系统随机数源的熵。
- 高效性:TinyJAMBU算法设计轻量,64位系统的汇编代码后端虽限制为32位寄存器操作,但仍比纯C实现有所改进。
- 安全性:提供128位、192位和256位版本的哈希函数,满足不同安全需求。
- 易用性:提供易于理解的API接口,方便集成到现有项目中。
安装使用步骤
编译安装
本项目使用cmake进行构建,需先安装cmake。
简单编译、测试和安装库的方法
bash
mkdir build
cd build
cmake ..
make
make test
sudo make install
使用交叉编译器构建
在调用cmake时设置CC
和CMAKE_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】