开源加密库 - TinyCrypt 的工程综合代码测试

一、工程创建

  1. 下载 TinyCrypt 开源库,连接
https://gitee.com/heartman_yc/tinycrypt/tree/master

tests/test_hmac.cHMAC 的测试文件,可通过此文件了解消息认证码的使用方法。

  1. 工程目录结构

在这里插入图片描述

头文件和源文件的文件如下:

在这里插入图片描述

二、测试结果

在这里插入图片描述

测试结果

=================================================
    TinyCrypt 轻量级加密库演示程序
=================================================
TinyCrypt是Intel开发的轻量级开源加密库
专为资源受限设备(嵌入式系统、IoT设备)设计
=================================================

=== AES-128 ECB模式演示 ===
密钥: 2b 7e 15 16 28 ae d2 a6  ab f7 15 88 09 cf 4f 3c
    
明文: 32 43 f6 a8 88 5a 30 8d  31 31 98 a2 e0 37 07 34
    
密文: 39 25 84 1d 02 dc 09 fb  dc 11 85 97 19 6a 0b 32
    
解密: 32 43 f6 a8 88 5a 30 8d  31 31 98 a2 e0 37 07 34
    
✓ AES-128 ECB模式加解密成功!

=== AES-128 CBC模式演示 ===
length=48
sizeof(ciphertext)=64
TC_AES_BLOCK_SIZE=16
length - TC_AES_BLOCK_SIZE=32
密钥: 2b 7e 15 16 28 ae d2 a6  ab f7 15 88 09 cf 4f 3c
    
初始化向量: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f
    
明文: 68 65 6c 6c 6f 20 72 74  2d 74 68 72 65 61 64 21
    20 68 65 6c 6c 6f 20 77  6f 72 6c 64 21 20 68 65
    6c 6c 6f 20 77 6f 72 6c  64 21 00 00 00 00 00 00
    
密文: 00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f
    dd 38 18 73 f8 44 8a e3  e3 6b 47 49 69 03 fa 9e
    97 f5 ad d4 20 59 05 ab  e2 f3 75 3a 12 66 67 19
    
解密: 68 65 6c 6c 6f 20 72 74  2d 74 68 72 65 61 64 21
    20 68 65 6c 6c 6f 20 77  6f 72 6c 64 21 20 68 65
    6c 6c 6f 20 77 6f 72 6c  64 21 00 00 00 00 00 00
    
✓ AES-128 CBC模式加解密成功!

=== AES-128 CTR模式演示 ===
密钥: 2b 7e 15 16 28 ae d2 a6  ab f7 15 88 09 cf 4f 3c
    
计数器: f0 f1 f2 f3 f4 f5 f6 f7  f8 f9 fa fb fc fd fe ff
    
明文: Hello TinyCrypt! This is CTR mode demonstration.
密文: a4 e9 b3 1f f7 40 28 d9  9c ab 55 07 93 ee d5 c5
    16 7f 14 55 14 53 38 10  38 e3 23 85 dc 3d 1c ca
    0f 0c a7 1d 15 e6 59 3c  ca c6 a9 6f 7e d5 02 6a
    
解密: Hello TinyCrypt! This is CTR mode demonstration.
✓ AES-128 CTR模式加解密成功!

=== SHA-256哈希算法演示 ===
消息 1: "abc"
SHA-256: ba 78 16 bf 8f 01 cf ea  41 41 40 de 5d ae 22 23
    b0 03 61 a3 96 17 7a 9c  b4 10 ff 61 f2 00 15 ad
    

消息 2: "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
SHA-256: 24 8d 6a 61 d2 06 38 b8  e5 c0 26 93 0c 3e 60 39
    a3 3c e4 59 64 ff 21 67  f6 ec ed d4 19 db 06 c1
    

消息 3: "Hello TinyCrypt! This is SHA-256 demonstration."
SHA-256: 2b 3b a2 46 8d ba 2b 36  4d cf 36 66 be 53 bc ad
    68 b9 e0 71 12 c1 5c aa  a1 d1 0c e4 cc e9 f5 e7
    

消息 4: "(空字符串)"
SHA-256: e3 b0 c4 42 98 fc 1c 14  9a fb f4 c8 99 6f b9 24
    27 ae 41 e4 64 9b 93 4c  a4 95 99 1b 78 52 b8 55
    

✓ SHA-256哈希计算完成!

=== HMAC消息认证码演示 ===
消息 1: "Hello TinyCrypt!"
HMAC: d5 23 ad b0 1f 26 1d f7  9a c2 37 4e 62 3e 47 c8
    20 c4 39 b0 40 a7 92 94  1c 69 f3 7c a6 d8 83 f9
    

消息 2: "This is HMAC demonstration with TinyCrypt library."
HMAC: 10 99 57 df b2 e6 f7 66  35 9e 65 fc 44 96 8c 98
    f0 bc 7b c0 5e 07 b9 ae  91 e2 bb c0 37 54 5e a3
    

消息 3: "IoT device secure communication test message."
HMAC: 11 d5 ed 0c 0d 4d ac 6e  35 08 07 26 04 f9 2d 09
    01 15 d2 a7 b2 5d 8b 80  47 cc 5b 0c f0 68 89 d2
    

✓ HMAC消息认证码计算完成!

=== IoT设备安全通信演示 ===
步骤1:加密传感器数据
原始数据: Temperature:25.6C,Humidity:60%,Pressure:1013hPa
加密数据: eb 4d a3 5a 17 4b fe f8  30 cf 74 68 27 95 67 fb
    0d 9a 23 73 51 fd 67 cc  cf 0f 4d 6f 0a 44 07 b5
    d4 12 35 32 74 6d 26 ea  64 35 4e 54 c8 55 be 9c
    

步骤2:计算数据完整性校验
HMAC校验: 24 7d 6f 6a 51 cd 28 51  0f 2b 1c 3a d5 85 a7 5e
    f9 0b 0b a3 9b 8b 36 3d  7a 3d ce 79 9f d2 53 86
    

步骤3:接收端验证和解密
✓ HMAC验证成功,数据完整性确认
解密: 54 65 6d 70 65 72 61 74  75 72 65 3a 32 35 2e 36
    43 2c 48 75 6d 69 64 69  74 79 3a 36 30 25 2c 50
    72 65 73 73 75 72 65 3a  31 30 31 33 68 50 61 01
    
解密数据: Temperature:25.6C,Humidity:60%,Pressure:1013hPa
解密数据: Temperature:25.6C,Humidity:60%,Pressure:1013hPa
✓ IoT设备安全通信演示成功!

=== TinyCrypt性能测试 ===
AES-128加密 1000: 0.001(1615508.9/)
SHA-256哈希 1000: 0.001(1615508.9/)

内存使用情况:
AES密钥调度结构: 176字节
SHA-256状态结构: 112字节
HMAC状态结构: 240字节

=================================================
    TinyCrypt演示完成!
=================================================
主要特性:
• 轻量化设计,内存占用极低
• 支持AES-128对称加密(ECB/CBC/CTR模式)
• 提供SHA-256哈希算法
• 支持HMAC消息认证码
• 适用于IoT设备安全通信
• 纯C语言实现,易于集成

博客来源: https://embedded-rd.blog.csdn.net/article/details/148928612


三、Makefile 文件

编写 Makefile 文件,内容如下:

# TinyCrypt演示程序Makefile
# 编译TinyCrypt库和演示程序

CC = gcc
CFLAGS = -Wall -Wextra -std=c99 -O2 -g
INCLUDES = -I./lib/include 
SRCDIR = lib/source


# TinyCrypt库源文件
TINYCRYPT_SOURCES = \
	$(SRCDIR)/aes_encrypt.c \
	$(SRCDIR)/aes_decrypt.c \
	$(SRCDIR)/cbc_mode.c \
	$(SRCDIR)/ctr_mode.c \
	$(SRCDIR)/sha256.c \
	$(SRCDIR)/hmac.c \
	$(SRCDIR)/utils.c



# 目标文件
TINYCRYPT_OBJECTS = $(TINYCRYPT_SOURCES:.c=.o)


# 主要目标
all: tinycrypt_demo 

# 编译演示程序
tinycrypt_demo: tinycrypt_demo.o $(TINYCRYPT_OBJECTS) 
	$(CC) $(CFLAGS) -o $@ $^ -lm



# 编译规则
%.o: %.c
	$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@

# 清理
clean:
	rm -f tinycrypt_demo 
	rm -f tinycrypt_demo.o $(TINYCRYPT_OBJECTS) 
	rm -f $(TESTDIR)/*.o

# 运行演示
run: tinycrypt_demo
	./tinycrypt_demo


# 帮助信息
help:
	@echo "TinyCrypt演示程序编译选项:"
	@echo "  make all          - 编译所有程序"
	@echo "  make tinycrypt_demo - 编译演示程序"
	@echo "  make run          - 运行演示程序"
	@echo "  make test         - 运行所有测试"
	@echo "  make clean        - 清理编译文件"
	@echo "  make help         - 显示此帮助信息"

.PHONY: all clean run test help 

Makefile 文件注释

# TinyCrypt演示程序Makefile
# 编译TinyCrypt库和演示程序

# 编译器设置
CC = gcc                      # 使用GCC作为C编译器
CFLAGS = -Wall -Wextra -std=c99 -O2 -g  # 编译选项:开启所有警告、使用C99标准、优化级别2并包含调试信息
INCLUDES = -I./lib/include   # 头文件搜索路径

# 目录定义
SRCDIR = lib/source           # 源代码目录
TESTDIR = tests               # 测试代码目录

# TinyCrypt库源文件列表
# 列出需要编译的TinyCrypt库的所有源文件
TINYCRYPT_SOURCES = \
	$(SRCDIR)/aes_encrypt.c \  # AES加密算法实现
	$(SRCDIR)/aes_decrypt.c \  # AES解密算法实现
	$(SRCDIR)/cbc_mode.c \     # CBC模式实现
	$(SRCDIR)/ctr_mode.c \     # CTR模式实现
	$(SRCDIR)/sha256.c \       # SHA-256哈希算法实现
	$(SRCDIR)/hmac.c \         # HMAC实现
	$(SRCDIR)/utils.c          # 工具函数

# 自动生成目标文件列表
# 将每个源文件的.c扩展名替换为.o
TINYCRYPT_OBJECTS = $(TINYCRYPT_SOURCES:.c=.o)

# 主要目标
# 当执行'make'或'make all'时,会构建这两个目标
all: tinycrypt_demo test_suite

# 编译演示程序
# 链接演示程序的目标文件和TinyCrypt库的目标文件,生成可执行文件
tinycrypt_demo: tinycrypt_demo.o $(TINYCRYPT_OBJECTS) 
	$(CC) $(CFLAGS) -o $@ $^ -lm  # 链接时需要数学库(-lm)

# 编译规则
# 通用规则:如何将任意.c文件编译为.o文件
%.o: %.c
	$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@  # 只编译不链接

# 清理编译生成的文件
clean:
	rm -f tinycrypt_demo                # 删除演示程序
	rm -f tinycrypt_demo.o $(TINYCRYPT_OBJECTS)  # 删除所有目标文件
	rm -f $(TESTDIR)/*.o                # 删除测试目录下的目标文件

# 运行演示程序
run: tinycrypt_demo
	./tinycrypt_demo                    # 执行演示程序

# 帮助信息
# 显示所有可用的make目标及其功能
help:
	@echo "TinyCrypt演示程序编译选项:"
	@echo "  make all          - 编译所有程序"
	@echo "  make tinycrypt_demo - 编译演示程序"
	@echo "  make test_suite   - 编译测试套件"
	@echo "  make run          - 运行演示程序"
	@echo "  make test         - 运行所有测试"
	@echo "  make clean        - 清理编译文件"
	@echo "  make help         - 显示此帮助信息"

# 声明伪目标
# 这些目标不对应实际的文件,而是执行特定的操作
.PHONY: all clean run test help test_suite

编译,make
在这里插入图片描述
执行

make run

四、测试代码

tinycrypt_demo.c 测试代码链接如下:
代码链接

https://mp.weixin.qq.com/s/cbLjTgzDznbVPvrgvqIReg
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值