0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

合宙LuatOS 来源:合宙LuatOS 作者:合宙LuatOS 2024-11-30 09:52 次阅读

本次我要说的攻略是关于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核心板,如下图所示:

wKgaomdArT-AfrbJAAKOrZmcZ2o656.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/

wKgZomdArWiAKiVRAAG-C4TcIUE135.png

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

wKgaomdArXWAOdz_AAFWfkZeKPI207.png

4.2.2烧录的脚本代码

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

下载流程参考下图:

wKgZomdArYOAE_rHAAMgFRcCty4731.pngwKgZomdArY-AAcFGAALwduayCdQ616.png

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

wKgaomdArZ2ARFMKAAEKgmuMwhE113.png

五、API 说明

5.1 crypto.md5(str)

计算 md5 值

参数

wKgZomdArbaALNgkAAAyO8xtoQA829.png

返回值

wKgaomdArcKAa2e9AABAU4vfpZY780.png

例子

wKgZomdArc2AK7jxAACOQXNWlOg085.png

5.2 crypto.hmac_md5(str, key)

计算 hmac_md5 值

参数

wKgaomdArdiAE8LkAABDcnBiWUg608.png

返回值

wKgaomdAreOAIVh7AABEFhFqA48289.png

例子

wKgZomdAre2ATwjxAAC-hC7H1wI097.png

5.3 crypto.sha1(str)

计算 sha1 值

参数

wKgaomdArfiAaynkAAAx455FjfI810.png

返回值

wKgZomdArgKAKT1GAABAuE6741k605.png

例子

wKgZomdArg2ALnvxAACPxu2wifU467.png

5.4 crypto.hmac_sha1(str, key)

计算 hmac_sha1 值

参数

wKgaomdArheAKYNVAABDSOWLfII484.png

返回值

wKgZomdAriKAI_XXAABHpVg6dmQ465.png

例子

wKgaomdAriyAAxNgAADBdhUExXs462.png

5.5 crypto.sha256(str)

计算 sha256 值

参数

wKgZomdArjaAYR24AAAw0pu6p1k848.png

返回值

wKgaomdArkCAc249AABBVhbIKJM657.png

例子

wKgZomdArkmAGsO_AACd3miq-Ms896.png

5.6 crypto.hmac_sha256(str, key)

计算 hmac_sha256 值

参数

wKgaomdArlOAU44sAABC3Wwv-Yg976.png

返回值

wKgZomdArlyAEWfdAABFQSfBytM809.png

例子

wKgZomdArmqAAAj-AADUmm1GZh8036.png

5.7 crypto.sha512(str)

计算 sha512 值

参数

wKgaomdArnSAR2s4AAAzrk6K7CU956.png

返回值

wKgZomdArn2AA4ghAAA_ySzT2W0092.png

例子

wKgaomdAroaAazDYAACdSjJ2xNE261.png

5.8 crypto.hmac_sha512(str, key)

计算 hmac_sha512 值

参数

wKgaomdArpKAEO-fAABGDDGtKYs096.png

返回值

wKgZomdArpmAHX6oAABJyXXo494621.png

例子

wKgZomdArqKAB5_zAADUW_hepaM259.png

5.9 crypto.base64_encode(data)

将数据进行 base64 编码

参数

wKgaomdArqyAYbcGAAAwLDPBSJE000.png

返回值

wKgZomdArraAakHuAAAwTjMOsEs894.png

例子

wKgaomdArsOAQcekAAHDQxNexu8653.png

5.10 crypto.base64_decode(data)

将数据进行 base64 解码

参数

wKgaomdArs2AXwklAAAvi3_3Uaw856.png

返回值

wKgZomdArtWAFtqYAAAvziw2344947.png

例子

wKgZomdAruCABq7vAAHKHTjFWAA132.png

5.11 crypto.cipher_list()

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

参数

返回值

wKgaomdAruuAQITTAABGfHRcw-k774.png


例子

wKgaomdArvaARqu5AAE78LG-Yq0848.png

5.12 crypto.cipher_suites()

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

参数

返回值

wKgZomdArwCAeFJIAABHuDxNlEo059.png


例子

wKgaomdArwuAXJb4AAE4UelLhrE173.png

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

对称加密

参数

wKgZomdArxWAIUxRAADpfHqaqCQ260.png


返回值

wKgZomdArx6AO2OAAAAx9ncYC5I356.png

例子

wKgaomdAryiABqCuAAHIED3Yn_Q667.png

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

对称解密

参数

wKgZomdArzKAKRs3AADvv8JdXHU642.png


返回值

wKgaomdArzyAFufzAAAu5LLS47o935.png

例子

wKgZomdAr0aAG0MIAAJI5aFeQaM297.png

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

计算 CRC16

参数

wKgZomdAr1GAbNg2AACcc-kCY0I735.png


返回值

wKgaomdAr1mAQiTaAAAuEM_KjFk606.png

例子

wKgZomdAr2KAKVcOAABqelEWI7s248.png

5.16 crypto.crc16_modbus(data, start)

直接计算 modbus 的 crc16 值

参数

wKgZomdAr22Ad3JQAABGy5zfm7E071.png

返回值

wKgZomdAr3eABwvZAAAsMvPWM8U340.png

例子

wKgaomdAr4GAWb0bAAEYKgtN9-k929.png

5.17 crypto.crc32(data)

计算 crc32 值

参数

wKgZomdAr5aAbfNjAAAoAntVK2c803.png

返回值

wKgaomdAr6eASc-oAAAvZhse4xY321.png

例子

wKgaomdAr7CAcaX1AABtswPSYU8464.png

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

计算 crc8 值

参数

wKgZomdAr72AWXJuAACoIMAKy_o402.png

返回值

wKgZomdAr8WAUYPwAAAwzZXcjV4294.png

例子

wKgaomdAr8-APBLxAADISFp8S_4184.png

5.19 crypto.crc7(data, poly, start)

计算 crc7 值

参数

wKgaomdAr9mAQrxOAABrUuZJ_YY295.png

返回值

wKgZomdAr-KAFyThAAAxIQm6I-w082.png

例子

wKgaomdAr-uAAmNeAADlXNrEG1g484.png

5.20 crypto.checksum(data, mode)

计算 checksum 校验和

参数

wKgZomdAr_WATsWRAABh0PNii94442.png

返回值

wKgaomdAr_-ALYcpAAAvW5hSybg850.png

例子

wKgZomdAsAqAAcUwAAFRnu_9MOE923.png

5.21 crypto.trng(len)

生成真随机数

参数

wKgZomdAsBKAUqzaAAApijCdK7s652.png

返回值

wKgaomdAsByAK8xXAAA15wTqnLM061.png

例子

wKgZomdAsCWAJlOMAAC0DMd1QCY315.png

5.22 crypto.totp(secret,time)

计算 TOTP 动态密码的结果

参数

wKgaomdAsC6AH6TgAAB0UULUhZo796.png

返回值

wKgZomdAsDeAEbnfAABFbjvlLbQ652.png

例子

wKgaomdAsECAdHFSAAEJpYmVM9o372.png

5.23 crypto.md_file(tp, path, hmac)

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

参数

wKgaomdAsEqATWUNAACNLZl5BlU475.png

返回值

wKgZomdAsFiAF62BAABDBRj1Xz4996.png

例子

wKgaomdAsGKAaMU6AAOVbj9DJio054.png

5.24 crypto.md(tp, data, hmac)

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

参数

wKgZomdAsGyAD68tAACAQgrFtBM659.png

返回值

wKgaomdAsHSAQAccAABIq_N6jIQ698.png

例子

wKgaomdAsH6AaWZoAAMMNk_mTKQ485.png

5.25 crypto.hash_init(tp)

创建流式 hash 用的 stream

参数

wKgZomdAsIeAUL2RAABnzZp3jIg756.png

返回值

wKgaomdAsJGAVHeBAABDWbMga8M946.png

例子

wKgZomdAsJyAd5beAAK_Yt6shNQ729.png

5.26 crypto.hash_update(stream, data)

流式 hash 更新数据

参数

wKgZomdAsKaAX_ObAABy3lt8QX4344.png

返回值

例子

wKgaomdAsLCAGT0BAABW2qIezks957.png

5.27 crypto.hash_finish(stream)

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

参数

wKgZomdAsLmAQwZ9AABGt1gcBU8829.png


返回值

wKgaomdAsMKANb7IAABaZJ1MmDc550.png


例子

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

wKgaomdAsN6APGYiABKDu5xdUyo118.png

6.1.3识别电脑的正确端口

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

wKgaomdAsOqAc0X7AAK63P3VWQ4547.png

6.1.4 用 Luatools 工具烧录

新建项目

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

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

wKgZomdAsPWAB7wkAAE_KN0DZGQ396.png

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

wKgaomdAsP-AN6O7AAD6xYLIJL0944.png

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

wKgZomdAsRSAT-zRAAP3HTX_8d8777.png

开始烧录

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

wKgZomdAsR-AD2CpAAQgpPagDwo540.png

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

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

wKgaomdAsS2AVLqZAACYtI3aKjg561.png

进入 BOOT 模式下载,如图:

wKgZomdAsT2Ad6HjAAOYThkAh7s481.png

6.2 例程

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

wKgaomdAsUqAaHckAAWQANuw1ww689.pngwKgZomdAsVuAbHpaAAdHzKxvPgw653.pngwKgaomdAsWqAA1d1AAVpSNyOCFw433.pngwKgaomdAsXmADkTsAATa4scSec0133.pngwKgZomdAsYqAA2GIAATAxOA9fIA839.pngwKgaomdAsaKARVYOAASps7rUqTU147.pngwKgaomdAsbKAJ3__AAZ8wDmRh20873.pngwKgaomdAscKAWn-JAAcX-iXHJbM664.pngwKgaomdAsdGALba5AAbwFQ_sKa0374.pngwKgZomdAsd-AWBDiAAcQwJ3p8cs333.pngwKgZomdAseyAeP8cAAKc3QQ4CLk419.png

6.3 对应 log

wKgaomdAsf6AQzjmAAjFUX9GzMU633.pngwKgZomdAsg6AYuhzAAjYz8WgO8E737.pngwKgaomdAsh-AG8GzAAuakBd3N94895.pngwKgaomdAsjKAM_ZBAAYxbQtOWxI094.pngwKgaomdAskWAaYqnAAW6WhNPZNc213.pngwKgZomdAslWADFD_AAYC7oVrQjc968.pngwKgZomdAsmmASfFjAAZSuh1zUCY714.pngwKgaomdAsn6AQR7MAAe9EOp2OMA839.pngwKgaomdAspKAUnLgAAmqU9juKsk221.pngwKgZomdAsqGAbq56AAWBXDH5_9o392.png

分享完毕。

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

    关注

    3

    文章

    4346

    浏览量

    62979
  • 模组
    +关注

    关注

    6

    文章

    1515

    浏览量

    30615
  • 加密解密算法

    关注

    0

    文章

    7

    浏览量

    1628
  • LuatOS
    +关注

    关注

    0

    文章

    76

    浏览量

    2001
收藏 人收藏

    评论

    相关推荐

    GPS 设计全攻略

    GPS 设计全攻略
    发表于 09-25 14:11

    MCU解密全攻略

    MCU解密全攻略
    发表于 08-19 14:28

    FPGA开发全攻略——上册.rar

    FPGA开发全攻略——上册.rar
    发表于 04-08 10:44

    FPGA开发全攻略_下.pdf

    FPGA开发全攻略_下.pdf
    发表于 04-08 10:48

    FPGA开发全攻略

    FPGA开发全攻略
    发表于 05-10 11:40

    FPGA开发全攻略

    电子工程师创新设计必备宝典系列之FPGA开发全攻略上,下两册
    发表于 04-24 21:11

    32位MCU开发全攻略

    32位MCU开发全攻略上下两册 ,主要讲述32位MCU应用开发知识
    发表于 05-04 15:42

    FPGA开发全攻略

    FPGA开发全攻略
    发表于 09-27 10:59

    FPGA开发全攻略实用教程精粹

    FPGA开发全攻略实用教程精粹
    发表于 09-28 13:50

    FPGA开发全攻略

    FPGA开发全攻略
    发表于 05-21 09:28

    FPGA开发全攻略

    FPGA开发全攻略
    发表于 03-03 10:30

    FPGA开发全攻略

    FPGA开发全攻略
    发表于 03-07 11:46

    MCU解密全攻略

    本内容介绍了MCU解密全攻略教程
    发表于 07-11 17:51 648次下载
    MCU<b class='flag-5'>解密</b><b class='flag-5'>全攻略</b>

    FPGA开发全攻略_上

    FPGA开发全攻略_上有需要的朋友下来看看。
    发表于 05-10 11:21 29次下载

    4G模组加解密艺术:通用函数的深度解读

    今天是对加解密通用函数的深度解读,我将详细讲解,建议收藏,不可错过。
    的头像 发表于 11-12 09:58 306次阅读
    <b class='flag-5'>4G</b><b class='flag-5'>模组</b><b class='flag-5'>加解密</b>艺术:<b class='flag-5'>通用</b><b class='flag-5'>函数</b>的深度解读