关于4G模组LuatOS开发:通用加解密函数(crypto)|全攻略

电子说

1.3w人已加入

描述

本次我要说的攻略是关于4G模组LuatOS开发的通用加解密函数,我以我常用的Air780E模组为例子供大家参考。

一、加解密概述

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

常见的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核心板,如下图所示:

LuatOS

此核心板的详细使用说明参考:
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/

LuatOS

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

LuatOS

4.2.2 烧录的脚本代码

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

下载流程参考下图:

LuatOSLuatOS

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

LuatOS

五、API 说明

5.1 crypto.md5(str)

计算 md5 值

参数

LuatOS

返回值

LuatOS

例子

LuatOS

5.2 crypto.hmac_md5(str, key)

计算 hmac_md5 值

参数

LuatOS

返回值

LuatOS

例子

LuatOS

5.3 crypto.sha1(str)

计算 sha1 值

参数

LuatOS

返回值

LuatOS

例子

LuatOS

5.4 crypto.hmac_sha1(str, key)

计算 hmac_sha1 值

参数

LuatOS

返回值

LuatOS

例子

LuatOS

5.5 crypto.sha256(str)

计算 sha256 值

参数

LuatOS

返回值

LuatOS

例子

LuatOS

5.6 crypto.hmac_sha256(str, key)

计算 hmac_sha256 值

参数

LuatOS

返回值

LuatOS

例子

LuatOS

5.7 crypto.sha512(str)

计算 sha512 值

参数

LuatOS

返回值

LuatOS

例子

LuatOS

5.8 crypto.hmac_sha512(str, key)

计算 hmac_sha512 值

参数

LuatOS

返回值

LuatOS

例子

LuatOS

5.9 crypto.base64_encode(data)

将数据进行 base64 编码

参数

LuatOS

返回值

LuatOS

例子

LuatOS

5.10 crypto.base64_decode(data)

将数据进行 base64 解码

参数

LuatOS

返回值

LuatOS

例子

LuatOS

5.11 crypto.cipher_list()

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

参数

返回值

LuatOS


 

例子

LuatOS

5.12 crypto.cipher_suites()

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

参数

返回值

LuatOS


 

例子

LuatOS

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

对称加密

参数

LuatOS


 

返回值

LuatOS

例子
 

LuatOS

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

对称解密

参数

LuatOS


 

返回值

LuatOS

例子

LuatOS

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

计算 CRC16

参数

LuatOS


 

返回值

LuatOS

例子

LuatOS

5.16 crypto.crc16_modbus(data, start)

直接计算 modbus 的 crc16 值

参数

LuatOS

返回值

LuatOS

例子

LuatOS

5.17 crypto.crc32(data)

计算 crc32 值

参数

LuatOS

返回值

LuatOS

例子

LuatOS

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

计算 crc8 值

参数

LuatOS

返回值

LuatOS

例子

LuatOS

5.19 crypto.crc7(data, poly, start)

计算 crc7 值

参数

LuatOS

返回值

LuatOS

例子

LuatOS

5.20 crypto.checksum(data, mode)

计算 checksum 校验和

参数

LuatOS

返回值

LuatOS

例子

LuatOS

5.21 crypto.trng(len)

生成真随机数

参数

LuatOS

返回值

LuatOS

例子

LuatOS

5.22 crypto.totp(secret,time)

计算 TOTP 动态密码的结果

参数

LuatOS

返回值

LuatOS

例子

LuatOS

5.23 crypto.md_file(tp, path, hmac)

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

参数

LuatOS

返回值

LuatOS

例子

LuatOS

5.24 crypto.md(tp, data, hmac)

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

参数

LuatOS

返回值

LuatOS

例子

LuatOS

5.25 crypto.hash_init(tp)

创建流式 hash 用的 stream

参数

LuatOS

返回值

LuatOS

例子

LuatOS

5.26 crypto.hash_update(stream, data)

流式 hash 更新数据

参数

LuatOS

返回值

例子

LuatOS

5.27 crypto.hash_finish(stream)

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

参数

LuatOS


 

返回值

LuatOS


 

例子

LuatOS

六、功能验证

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 键然后点按重启键即可.

LuatOS

6.1.3 识别电脑的正确端口

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

LuatOS

6.1.4 用 Luatools 工具烧录

新建项目

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

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

LuatOS

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

LuatOS

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

LuatOS

开始烧录

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

LuatOS

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

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

LuatOS

进入 BOOT 模式下载,如图:

LuatOS

6.2 例程

参考以下示例,本库有专属 demo,复制链接查看 crypto 的 demo 例子:
(https://gitee.com/openLuat/LuatOS-Air780E/tree/master/demo/crypto)

LuatOSLuatOSLuatOSLuatOSLuatOSLuatOSLuatOSLuatOSLuatOSLuatOSLuatOS

6.3 对应 log

LuatOSLuatOSLuatOSLuatOSLuatOSLuatOSLuatOSLuatOSLuatOSLuatOS

分享完毕。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分