新闻  |   论坛  |   博客  |   在线研讨会
Air780E模组LuatOS开发:通用加解密函数(crypto)
13673998452 | 2025-02-05 16:33:22    阅读:4   发布文章

本次我将讲解低功耗4G模组Air780E的LuatOS开发,关于通用加解密函数(crypto)教程分享给大家。我会从加解密概述、演示功能概述、硬件准备、软件环境、API 说明等全面讲述…



一、加解密概述

加解密算法是保证数据安全的基础技术,无论是在数据传输、存储,还是用户身份验证中,都起着至关重要的作用。随着互联网的发展和信息安全威胁的增加,了解并掌握常用的加解密算法已经成为开发者和安全从业者的必修课。

常见的15种加密解密算法分别是:散列哈希[MD5、SHA1、CRC32],对称[DES,3DES(TDEA、Triple DES),AES、,Blowfish,RC4、RC5,IDEA],Base64、Rabbit、Escape。


【三种分类】


1、对称加密:
对称加密是指加密和解密使用同一个密钥的加密方法.由于加密和解密过程中的密钥相同,因此需要在通信双方之间安全地共享密钥.对称加密的速度较快,适合用于大量数据的加密

2、非对称加密:
非对称加密算法采用一对密钥:公钥和私钥.公钥用于加密,私钥用于解密.由于加密和解密使用不同的密钥,非对称加密算法解决了密钥分发的问题,是当前加密系统中安全性最高的加密技术之一.

3、Hash算法:
这是一种不可逆的算法,它常用于验证数据的完整性


二、演示功能概述


本文章通过 Air780 的核心板烧录 LuatOS 示例代码,来演示有关加解密的各种 API 的功能。

https://gitee.com/openLuat/LuatOS-Air780E/tree/master/demo/crypto
(复制链接查看 crypto 的 demo 例子)

API 的具体用法,读者可以参考本文中的"五、API 说明"。


三、硬件准备


3.1 Air780E 核心板

使用Air780E核心板,如下图所示:

wKgZPGdJoLmAU-NDAAL1A1GQkX0933.png

此核心板的详细使用说明参考:
https://docs.openluat.com/air780e/product/

Air780E产品手册中的 《开发板Core_Air780E使用说明》,写这篇文章时最新版本的使用说明为:《开发板Core_Air780E使用说明》;若在使用过程中遇到任何问题,可以直接参考这份使用说明文档。


3.2 SIM 卡

中国大陆环境下,可以上网的sim卡,一般来说,使用移动、电信、联通的物联网卡或者手机卡都行。


3.3 PC 电脑

请准备一台配备 USB 接口且能够正常上网的电脑。

电脑操作系统为:
WIN10以及以上版本的WINDOWS系统。


3.4 数据通信线

带TYPE-C口的USB数据线


四、软件环境


4.1 Luatools 工具

要想烧录 LuatOS 到 4G 模组中,需要用到的调试工具:Luatools

详细使用说明参考:
Luatools工具使用说明:
https://docs.openluat.com/Luatools/

Luatools 工具集具备以下几大核心功能:

一键获取最新固件:自动连接服务器,轻松下载最新的模组固件.

固件与脚本烧录:便捷地将固件及脚本文件烧录至目标模组中.

串口日志管理:实时查看模组通过串口输出的日志信息,并支持保存功能.

串口调试助手:提供简洁的串口调试界面,满足基本的串口通信测试需求.

Luatools下载之后,新建一个命名为 "Luatools" 的文件夹,将下载的Luatools_v3.exe拷贝或移动到新建的Luatools文件夹内,点击 Luatools_v3.exe 即可运行。


4.2 准备需要烧录的代码

首先要说明一点:脚本代码, 要和固件的soc文件一起烧录。


4.2.1 烧录的底层固件文件

底层 core 下载地址:

LuatOS 固件版本下载地址:

https://docs.openluat.com/air780e/luatos/firmware/

wKgZO2dJoOGANZq9AAIKpdALvdE769.png

Air780E 的底层固件在 Luatools 解压后目录的:
 LuatOS-SoC_V1112_EC618_FULL.soc

wKgZO2dJoO6ATgclAAGZ2kHLDmE213.png


4.2.2 烧录的脚本代码

首先要下载 Air780 的 LuatOS 示例代码到一个合适的项目目录,
示例代码网站:
https://gitee.com/openLuat/LuatOS-Air780E

下载流程参考下图:

wKgZPGdJoP-AN0-xAAcdA9HrIY0198.png

下载的文件解压,找到 LuatOS-Air780E-masterdemocryptomain.lua,如图:

wKgZO2dJoQ6AauNtAAE6Wf7fNLE615.png


五、API 说明


5.1 crypto.md5(str)

计算 md5 值

参数

wKgZPGdJoSaANEXBAAA7c9b0lRI108.png

返回值

wKgZO2dJoTCAJU0MAABLEmuzuKs801.png

例子

wKgZPGdJoTuAb-rFAACo2Yu3x7I597.png

5.2 crypto.hmac_md5(str, key)

计算 hmac_md5 值

参数

wKgZPGdJoUeAc0XTAABO8HsJN2g622.png

返回值

wKgZO2dJoVOAc2ORAABQpWOTsas721.png

例子

wKgZO2dJoWCAToDQAADllf2cegE233.png

5.3 crypto.sha1(str)

计算 sha1 值

参数

wKgZO2dJoWqADkUfAAA7sEmX3uU185.png

返回值

wKgZO2dJoXSAYN15AABNaCcJ6FE763.png

例子

wKgZPGdJoYSANP7wAACt_0Plisc417.png

5.4 crypto.hmac_sha1(str, key)

计算 hmac_sha1 值

参数

wKgZO2dJoY6AVmQvAABQxlI_rFw943.png

返回值

wKgZPGdJoZiAG1cLAABU9Lx84WI052.png

例子

wKgZPGdJoaOAbLkLAADpYDgqzxY505.png

5.5 crypto.sha256(str)

计算 sha256 值

参数

wKgZPGdJoa2AIY9SAAA9rS3bP6U932.png

返回值

wKgZPGdJobiAH0mnAABRarqaPJg043.png

例子

wKgZPGdJocSAPjnAAADAjoPutKE242.png

5.6 crypto.hmac_sha256(str, key)

计算 hmac_sha256 值

参数

wKgZO2dJoc-AVCyUAABQ2hhhtR0389.png

返回值

wKgZPGdJodmAGlaNAABRxIn773E686.png

例子

wKgZO2dJoeOAbNnAAAEALMCFwSQ728.png

5.7 crypto.sha512(str)

计算 sha512 值

参数

wKgZPGdJoeyAAulTAAA-L5C90-g962.png

返回值

wKgZPGdJofeANTavAABMZKTjHXk182.png

例子

wKgZO2dJogKARQ0ZAAC9OJmwOFY720.png

5.8 crypto.hmac_sha512(str, key)

计算 hmac_sha512 值

参数

wKgZPGdJog6ADbzHAABT4uOtClE148.png

返回值

wKgZPGdJohmAEs2VAABYIfe8cDE732.png

例子

wKgZPGdJoiSAYoEfAAD-MqDAIX4875.png

5.9 crypto.base64_encode(data)

将数据进行 base64 编码

参数

wKgZO2dJoi-AKAxGAAA5RiUShfc873.png

返回值

wKgZO2dJojiAIiFhAAA44N62syQ009.png

例子

wKgZPGdJokOAQMhGAAIn9e3oYDI349.png

5.10 crypto.base64_decode(data)

将数据进行 base64 解码

参数

wKgZO2dJok-AfI-6AAA7z_NzHnk038.png

返回值

wKgZPGdJomeAc8nUAAA4X2vjoYc647.png

例子

wKgZPGdJonKAPmn_AAIYMemHlaU695.png


5.11 crypto.cipher_list()

获取当前固件支持的 cipher 列表

参数

返回值

wKgZO2dJon2AHYy-AABVSwKuLB0893.png


 

例子

wKgZPGdJoo2ABqDIAAF6gU-HzSM019.png


5.12 crypto.cipher_suites()

获取当前固件支持的 cipher suites 列表

参数

返回值

wKgZPGdJopiAbrQLAABTuGKlXRg682.png


 

例子

wKgZPGdJoqSAd_UFAAFzlq4PMxU976.png


5.13 crypto.cipher_encrypt(type, padding, str, key, iv)

对称加密

参数

wKgZO2dJorCAQas8AAEWTokTTCE443.png


 

返回值

wKgZPGdJor2AYGbnAAA50mZPFOo343.png

例子
 

wKgZO2dJoseAejJtAAIe9hF4AWM075.png

5.14 crypto.cipher_decrypt(type, padding, str, key, iv)

对称解密

参数

wKgZPGdJotSAY0FnAAEbw3jHGQw681.png


 

返回值

wKgZO2dJot-ALUJvAAA5bTV-QIk570.png

例子

wKgZPGdJouqAURfvAAK9QJb1EoY289.png


5.15 crypto.crc16(method, data, poly, initial, finally, inReversem outReverse)

计算 CRC16

参数

wKgZPGdJovqAZcoHAAC7O58CPvI284.png


 

返回值

wKgZPGdJowWAWh5XAAA5HZPOIms866.png

例子

wKgZPGdJoxCAPtAYAACBd5hejQ4686.png

5.16 crypto.crc16_modbus(data, start)

直接计算 modbus 的 crc16 值

参数

wKgZPGdJoxyAYPDlAABSv9PK8ek087.png

返回值

wKgZPGdJoyWADBnHAAA2yjtfTek721.png

例子

wKgZPGdJoy-AMMQxAAFN42NK4aM720.png


5.17 crypto.crc32(data)

计算 crc32 值

参数

wKgZO2dJoz6AfvLoAAAwo5Jlr5M142.png

返回值

wKgZPGdJo0iAEv0kAAA3xqlnaRg507.png

例子

wKgZO2dJo1GAU9atAACI3rsrAqw513.png

5.18 crypto.crc8(data, poly, start, revert)

计算 crc8 值

参数

wKgZO2dJo1yAQ_xMAADIceC_7uk157.png

返回值

wKgZPGdJo2eAHhMdAAA20KHnMI4646.png

例子

wKgZO2dJo3GADbJPAADwK-9nkz8540.png

5.19 crypto.crc7(data, poly, start)

计算 crc7 值

参数

wKgZPGdJo3uAaXA7AACCRW13gTo631.png

返回值

wKgZPGdJo5SANVZNAAA6TzYkYKE063.png

例子

wKgZPGdJo5-AaAlwAAER_9oXIzo864.png

5.20 crypto.checksum(data, mode)

计算 checksum 校验和

参数

wKgZO2dJo6qAPUb-AAB3ojZF0GI840.png

返回值

wKgZO2dJo7aAbmTNAAA6E1_1fZU047.png

例子

wKgZPGdJo8GAYcb-AAGV_yEmED0275.png

5.21 crypto.trng(len)

生成真随机数

参数

wKgZPGdJo86ADUmhAAA1BY3JVI8176.png

返回值

wKgZO2dJo9mACD08AABB8Vevn3Q011.png

例子

wKgZO2dJo-OANT8cAADYGkPEwMg188.png

5.22 crypto.totp(secret,time)

计算 TOTP 动态密码的结果

参数

wKgZPGdJo--AEFM3AACLm3pCjdY566.png

返回值

wKgZO2dJo_uADji9AABTBnOqCzo340.png

例子

wKgZPGdJpAWAEfnaAAE8DIxdDUY931.png

5.23 crypto.md_file(tp, path, hmac)

计算文件的 hash 值(md5/sha1/sha256 及 hmac 形式)

参数

wKgZO2dJpByAIgW6AAClmxCpdDE077.png

返回值

wKgZPGdJpCeAObO7AABPTJOwdNs551.png

例子

wKgZO2dJpDOAHrv4AAQ2Hk37UhQ592.png

5.24 crypto.md(tp, data, hmac)

计算数据的 hash 值(md5/sha1/sha256 及 hmac 形式)

参数

wKgZO2dJpD6ADh5DAACXitucaVE645.png

返回值

wKgZPGdJpEiAZC7RAABUZcNCq4I228.png

例子

wKgZPGdJpFOAZntUAAOfWL3FAPw537.png

5.25 crypto.hash_init(tp)

创建流式 hash 用的 stream

参数

wKgZO2dJpGCAI4LcAAB6rn63ziA843.png

返回值

wKgZO2dJpGmAJpmSAABQ_jdgoqk871.png

例子

wKgZPGdJpHiAJPTYAANIcbus5Kk461.png


5.26 crypto.hash_update(stream, data)

流式 hash 更新数据

参数

wKgZO2dJpIWAGlGrAACJIM1IMdU516.png

返回值


例子

wKgZO2dJpJOAJt9kAABoDoutq0o874.png

5.27 crypto.hash_finish(stream)

获取流式 hash 校验值并释放创建的 stream

参数

wKgZPGdJpJ6AbrvLAABStilXUIw856.png


 

返回值

wKgZO2dJpKeAX7_rAABrdwuadu8611.png


 

例子

wKgZO2dJpLGAfXU0AACFPk6PIRk732.png


六、功能验证


6.1 烧录固件


6.1.1 正确连接电脑和 4G 模组电路板

使用带有数据通信功能的数据线,不要使用仅有充电功能的数据线.


6.1.2 识别 4G 模组的 BOOT 引脚

在下载之前,要用模组的 BOOT 引脚触发下载, 也就是说,要把 4G 模组的 BOOT 引脚拉到 1.8v,或者直接把 BOOT 引脚和 VDD_EXT 引脚相连.我们要在按下 BOOT 按键时让模块开机,就可以进入下载模式了.

具体到 Air780E 开发板:

1、当我们模块没开机时,按着 BOOT 键然后长按 POW 开机.

2、当我们模块开机时,按着 BOOT 键然后点按重启键即可.

wKgZPGdJpMuAEcdaABfav2gQXWU185.png


6.1.3 识别电脑的正确端口

判断是否进入 BOOT 模式:模块上电,此时在电脑的设备管理器中,查看串口设备, 会出现一个端口表示进入了 BOOT 下载模式,如下图所示:

wKgZPGdJpPuAB_Y2AANIrtPjBus839.png


6.1.4 用 Luatools 工具烧录

新建项目

首先,确保你的 Luatools 的版本,大于等于 3.0.6 版本。

在 Luatools 的左上角上有版本显示的,如图所示:

wKgZO2dJpQaAS-YWAAF7zBVUk_Q323.png

Luatools 版本没问题的话, 就点击 Luatools 右上角的“项目管理测试”按钮,如下图所示:

wKgZPGdJpRGAcBaEAAEmi7P1zOk338.png

这时会弹出项目管理和烧录管理的对话框,可以新建一个项目,如下图:

wKgZPGdJpR2ANypDAASsUXhW2xQ196.png

开始烧录

选择 Air780E 板子对应的底层 core 和刚改的 main.lua 脚本文件.下载到板子中.

wKgZO2dJpSuAc6vFAATnqDrG6Rg933.png

点击下载后,我们需要进入 BOOT 模式才能正常下载.

如果没进入 BOOT 模式会出现下图情况:

wKgZO2dJpTeATz6sAAC3YyKBBLQ326.png

进入 BOOT 模式下载,如图:

wKgZPGdJpUKAPLPSAAHzSIqRyR4350.pngwKgZPGdJpUyAfdGeAAJENvChPwY134.png

6.2 例程

参考以下示例,本库有专属 demo,复制链接查看 crypto 的 demo 例子:

 

6.3 对应 log

 

7、总结

通过本章内容的学习,你可以学习到有关加解密算法的函数,例如:crypto.md5(str)、crypto.hmac_md5(str,key)、crypto.hmac_sha1(str,key)等等函数。

 

更多内容,敬请关注!
 


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客