LiteOS组件尝鲜-玩转TinyCryp
基本介绍
Tinycrypt 是一种简单、快速、可配置的小型加密库,支持aes(对称加密)、sha256(哈希)等算法,广泛应用于物联网设备间通信以及文件安全等领域。
TinyCrypt具备占用内存小、安全性高和使用灵活等优点。TinyCrypt占用的内存比其他的后端加密库要小几个数量级;同时它具有较高的安全性,可使物联网设备之间的通信和连接始终保持加密状态。另外TinyCrypt减少了各个文件之间的依赖关系,可以按照用户所需进行选择性编译。
使用说明
接下来以TinycryptDemo为例介绍TinyCrypt的使用。
解析Tinycrypt Demo
在tinycrypt_demo.c中主要实现通过分组链接模式加密算法模式(CBC)对字符串g_demoPlainText进行加解密。
TinyCrypt Demo接口介绍:
-
设置加密密钥
tc_aes128_set_encrypt_key(TCAesKeySched_t s, const uint8_t *k);
s: 初始化结构tc_aes_key_sched_struct;
k:密钥;
功能:根据输入密钥初始化tc_aes_key_sched_struct结构体。
-
CBC模式加密
tc_cbc_mode_encrypt(uint8_t *out, unsigned int outlen, const uint8_t *in, unsigned int inlen, const uint8_t *iv, const TCAesKeySched_t sched);
out:输出密文;
outlen:输出密文长度;
in:输入明文;
inlen:输入明文长度;
iv:初始化向量;
sched:密钥;
功能:根据输入明文,初始化向量和加密密钥加密生成密文。
-
设置解密密钥
tc_aes128_set_decrypt_key(TCAesKeySched_t s, const uint8_t *k);
s: 初始化结构tc_aes_key_sched_struct;
K:密钥;
功能:根据输入密钥初始化tc_aes_key_sched_struct结构体。
• CBC模式解密
tc_cbc_mode_decrypt(uint8_t *out, unsigned int outlen, const uint8_t *in, unsigned int inlen, const uint8_t *iv, const TCAesKeySched_t sched);
out:输出明文;
outlen:输出明文长度;
in:输入密文;
inlen:输入密文长度;
iv:初始化向量;
sched:密钥;
功能:根据输入密文,初始化向量和解密密钥加密生成明文。
使能Tinycrypt Demo
- 在LiteOS源码根目录下根据实际使用的开发板,拷贝tools/build/config/目录下的默认配置文件${platform}.config到根目录,并重命名为.config。
- 继续在LiteOS源码根目录下执行make menuconfig命令,按如下菜单路径使能Tinycrypt组件和Tinycrypt Demo。
Demos --->
Security Demo --->
[*] Enable Tinycrypt Demo
保存退出后,LiteOS会从github上自动下载Tinycrypt源代码,并从gitee上下载适配LiteOS系统的patch包,并针对源代码打入patch包。组件下载流程请参考三方开源组件下载脚本components/download.sh。
注意:下载需要Linux主机可以访问互联网,并安装git。
编译运行Tinycrypt Demo
使能Tinycrypt Demo后,在LiteOS源码根目录下执行make clean; make -j命令编译LiteOS工程,编译成功后会在out/{platform}/lib路径下生成tinycrypt.a和tinycrypt_demo.a文件,系统镜像文件为Huawei_LiteOS.bin。
以Cloud_STM32F429IGTx_FIRE开发板为例来运行Tinycrypt Demo,其他开发板操作请参考快速入门:https://gitee.com/LiteOS/LiteOS/blob/master/doc/LiteOS_Quick_Start.md。
LiteOS启动后会运行Tinycrypt Demo,执行分组链接模式加密算法(CBC)对g_demoPlainText进行加解密。执行结果如下:
********Hello Huawei LiteOS********
LiteOS Kernel Version : 5.0.0
build data : May 10 2021 17:38:10
**********************************
osAppInit
cpu 0 entering scheduler
app init!
Hello, welcome to liteos demo!
Tinycrypt demo task start to run.
encrypted = [0123456789abcdef9bcb4cdbc8e194e8fb3febf7f661098d45af9df1f468c5c83b9bacd9df449ba]
decrypted = [hello liteOS !]
Tinycrypt demo task finished.
Huawei LiteOS #
以上为TinyCrypt使用指南的全部内容,欢迎大家学习交流。
结语
未来我们还会持续新增更多组件、开发板、架构、特性等。
感谢您的阅读,有任何问题、建议,都可以留言给我们,让我们一起进步:https://gitee.com/LiteOS/LiteOS/issues
为了更容易找到“LiteOS”代码仓,建议访问https://gitee.com/LiteOS/LiteOS,关注“ Watch”、点赞“Star”、并“Fork”到自己账号下,如下图。
- end –
- 点赞
- 收藏
- 关注作者
评论(0)