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

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

3天内不再提示

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

合宙LuatOS 来源:合宙LuatOS 作者:合宙LuatOS 2024-11-12 09:58 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

今天是对加解密通用函数的深度解读,我将详细讲解,建议收藏,不可错过。

1、加解密概述

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

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

三种分类:

1.1 对称加密

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

1.2 非对称加密

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

1.3 Hash算法

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

2、请输入标题

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

最新源码下载:
https://gitee.com/openLuat/LuatOS-Air780E/tree/master/demo/crypto

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

3、硬件准备

3.1 Air780E核心板

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

wKgZoWcxeIeATy3-AAUCrxlwOvU905.png

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

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

3.2 SIM

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

3.3 PC电脑

WINDOWS系统。

3.4 数据通信线

TYPE-C口的USB数据线。

4、软件环境

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/

wKgaomcxeMWAcoTWAAIU_EWLQ8w527.png

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

wKgZoWcxeNOAEe2EAAGKI7UMgG0801.png

4.2.2 烧录的脚本代码

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

下载流程参考下图:

wKgaoWcxeOeAIW5CAAbgSEon86w544.png

下载的文件解压,找到

LuatOS-Air780E-masterdemocryptomain.lua,如图:

wKgaoWcxePSABLaVAAEsC19RbXk264.png

5、API说明

5.1 crypto.md5(str)

计算md5值

参数

传入值类型 解释
string
需要计算的字符串

返回值

返回值类型 解释
string
计算得出的md5值的hex字符串

例子

wKgZomcxeQuAaaYfAAEHeBClGhY568.png

5.2 crypto.hmac_md5(str,key)

计算hmac_md5值

参数

传入值类型 解释
string
需要计算的字符串
string
密钥

返回值

返回值类型 解释
string
计算得出的hmac_md5值的hex字符串

例子

wKgZomcxeRaAK96CAAFKh07YCjE264.png

5.3 crypto.sha1(str)

计算sha1值

参数

传入值类型 解释
string
需要计算的字符串

返回值

返回值类型 解释
string
计算得出的sha1值的hex字符串

例子

wKgZomcxeSGAbE4xAAEBF57NQfc350.png

5.4 crypto.hmac_sha1(str,key)

计算hmac_sha1值

参数

传入值类型 解释
string
需要计算的字符串
string
密钥

返回值

返回值类型 解释
string
计算得出的hmac_sha1值的hex字符串

例子

wKgaoWcxeSyAFfwrAAFLyBTIlyg671.png

5.5 crypto.sha256(str)

计算sha256值

参数

传入值类型 解释
string
需要计算的字符串

返回值

返回值类型 解释
string
计算得出的sha256值的hex字符串

例子

wKgaoWcxeUGAT7K1AAE1pOlveS4689.png

5.6 crypto.hmac_sha256(str,key)

计算hmac_sha256值

参数

传入值类型 解释
string
需要计算的字符串
string
密钥

返回值

返回值类型 解释
string
计算得出的hmac_sha256值的hex字符串

例子

wKgZoWcxeUyAUkctAAGObGOi5fE442.png

5.7 crypto.sha512(str)

计算sha512值

参数

传入值类型 解释
string
需要计算的字符串

返回值

返回值类型 解释
string
计算得出的sha512值的hex字符串

例子

wKgZoWcxeVeACnjxAAEER3C9UOs985.png

5.8 crypto.hmac_sha512(str,key)

计算hmac_sha512值

参数

传入值类型 解释
string
需要计算的字符串
string
密钥

返回值

返回值类型 解释
string
计算得出的hmac_sha512值的hex字符串

例子

wKgaoWcxeWGAET44AAGMLtXDl00735.png

5.9 crypto.base64_encode(data)

将数据进行base64编码

参数

传入值类型 解释
string
待编码的数据

返回值

返回值类型 解释
string
编码后的数据

例子

wKgaoWcxeW2AfDbOAAKJ_WuTxm0992.png

5.10 crypto.base64_decode(data)

将数据进行base64解码

参数

传入值类型 解释
string
待解码的数据

返回值

返回值类型 解释
string
解码后的数据

例子

wKgaoWcxeXeAdH07AAKdeod560k396.png

5.11 crypto.cipher_list()

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

参数

返回值

返回值类型 解释
table
本固件支持的cipher列表,字符串数组

例子

wKgZoWcxeYGAZpX9AAI4GTRZrFE935.png

5.12 crypto.cipher_suites()

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

参数

返回值

返回值类型 解释
table
本固件支持的ciphersuites列表,字符串数组

例子

wKgaoWcxeYqAE0LRAAHCRLqruqk012.png

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

对称加密

参数

传入值类型 解释
string
算法名称,例如AES-128-ECB/AES-128-CBC,
可查阅crypto.cipher_list()
string
对齐方式,
支持PKCS7/ZERO/ONE_AND_ZEROS/
ZEROS_AND_LEN/NONE
string
需要加密的数据
string
密钥,需要对应算法的密钥长度
string
IV值,非ECB算法需要

返回值

返回值类型 解释
string
加密后的字符串

例子

wKgZoWcxeZ2AeeJjAANzpU1TCaA392.png

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

对称解密

参数

传入值类型 解释
string
算法名称,例如AES-128-ECB/AES-128-CBC,可查阅crypto.cipher_list()
string
对齐方式,支持PKCS7/ZERO/ONE_AND_ZEROS/ZEROS_AND_LEN/NONE
string
需要解密的数据
string
密钥,需要对应算法的密钥长度
string
IV值,非ECB算法需要

返回值

返回值类型 解释
string
解密后的字符串

例子

wKgaoWcxeaiAEXiaAARXrN0_GJw542.png

5.15 crypto.crc16

(method,data,poly,initial,finally,inReversemoutReverse)

计算CRC16

参数

传入值类型 解释
string
CRC16模式(”IBM”,”MAXIM”,”USB”,”MODBUS”,”CCITT”,”CCITT-FALSE”,”X25”,”XMODEM”,”DNP”,”USER-DEFINED”)
string
字符串
int
poly值
int
initial值
int
finally值
int
输入反转,1反转,默认0不反转
int
输入反转,1反转,默认0不反转

返回值

返回值类型 解释
int
对应的CRC16值

例子

wKgZoWcxebSAfGmQAACbFX0UQo0127.png

5.16 crypto.crc16_modbus(data,start)

直接计算modbus的crc16值

参数

传入值类型 解释
string
数据
int
初始化值,默认0xFFFF

返回值

返回值类型 解释
int
对应的CRC16值

例子

wKgZoWcxeb-AOM4qAAH2dr7H8-o733.png

5.17 crypto.crc32(data)

计算crc32值

参数

传入值类型 解释
string
数据

返回值

返回值类型 解释
int
对应的CRC32值

例子

wKgaoWcxedKAbFJ6AACvlY9S8qU492.png

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

计算crc8值

参数

传入值类型 解释
string
数据
int
crc多项式,可选,如果不写,将忽略除了数据外所有参数
int
crc初始值,可选,默认0
boolean
是否需要逆序处理,默认否

返回值

返回值类型 解释
int
对应的CRC8值

例子

wKgaoWcxeeGAbyhYAAFg7kQ-ILg244.png

5.19 crypto.crc7(data,poly,start)

计算crc7值

参数

传入值类型 解释
string
数据
int
crc多项式,可选,默认0xE5
int
crc初始值,可选,默认0x00

返回值

返回值类型 解释
int
对应的CRC7值

例子

wKgaoWcxeeuAXpkQAAHBHiTt2ZA256.png

5.20 crypto.checksum(data,mode)

计算checksum校验和

参数

传入值类型 解释
string
待计算的数据,必选
int
模式,累加模式,0-异或,1-累加,默认为0

返回值

返回值类型 解释
int
checksum值,校验和

例子

wKgaomcxefaANHvjAAKipVgHmA0319.png

5.21 crypto.trng(len)

生成真随机数

参数

传入值类型 解释
int
数据长度

返回值

返回值类型 解释
string
指定随机数字符串

例子

wKgZomcxegCASyycAAFKzNVxwGM656.png

5.22 crypto.totp(secret,time)

计算TOTP动态密码的结果

参数

传入值类型 解释
string
网站提供的密钥(就是BASE32编码后的结果)
int
可选,时间戳,默认当前时间

返回值

返回值类型 解释
int
计算得出的六位数结果计算失败返回nil

例子

wKgZomcxegqAKXLHAAGBEm2BZ0s966.png

5.23 crypto.md_file(tp,path,hmac)

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

参数

传入值类型 解释
string
hash类型,大小字母,例如“MD5”“SHA1”“SHA256”
string
文件路径,例如/luadb/logo.jpg
string
hmac值,可选

返回值

返回值类型 解释
string
HEX过的hash值,若失败会无返回值

例子

wKgaoWcxehiAakHbAAUnbaLiUYY833.png

5.24 crypto.md(tp,data,hmac)

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

参数

传入值类型 解释
string
hash类型,大小字母,例如“MD5”“SHA1”“SHA256”
string
待处理的数据
string
hmac值,可选

返回值

返回值类型 解释
string
HEX过的hash值,若失败会无返回值

例子

wKgZomcxeiWANcPHAAR3luG1dAI958.png

5.25 crypto.hash_init(tp)

创建流式hash用的stream

参数

传入值类型 解释
string
hash类型,大写字母,例如“MD5”“SHA1”“SHA256”
string
hmac值,可选

返回值

返回值类型 解释
userdata
成功返回一个数据结构,否则返回nil

例子

wKgZoWcxejGAWbRFAAU0zm-U04Q751.png

5.26 crypto.hash_update(stream,data)

流式hash更新数据

参数

传入值类型 解释
userdata
crypto.hash_init()创建的stream,必选
string
待计算的数据,必选
return

返回值

例子

wKgaoWcxejyAQPG4AACeiQ-Dew8451.png

5.27 crypto.hash_finish(stream)

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

参数

传入值类型 解释
userdata
crypto.hash_init()创建的stream,必选

返回值

返回值类型 解释
string
成功返回计算得出的流式hash值的hex字符串,失败无返回

例子

wKgaoWcxekaABMb8AADRlOtmi3I188.png

6、功能验证

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

wKgaoWcxemOAaRBFABKogEFl5Vw523.png

6.1.3 识别电脑的正确端口

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

wKgZomcxem-AAjIRAAIkofRALt8842.png

6.1.4 用Luatools工具烧录

新建项目

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

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

wKgaomcxeniAUWvkAAFrFiLoPU0941.png

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

wKgaomcxeoKAOSe-AAEf8P5c8Yg893.png

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

wKgaomcxeo2AQzcHAASGFFD0IlM417.png

开始烧录

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

wKgZomcxepmAWyw5AAS3vnWqNzc890.png

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

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

wKgZomcxeqyAB3B1AACvif4pTIA638.png

进入boot模式下载,如图:

wKgZomcxeruAFrUwAAQOn5O82Jg463.png

6.2 例程

本库有专属demo,点此链接查看crypto的demo例子

wKgaomcxetKAfhTVAAc0qo1zHpo675.pngwKgZomcxeueACCyEAA3QmGXIcks918.pngwKgZomcxevyAIbf_AAkupvoqaFU360.pngwKgZomcxexCAC_nVAAeha9vSs80004.pngwKgaomcxeyOAA-HLAAmmTgrWs-Q153.pngwKgZomcxezWAPRUgAA0JLU35Sdc711.pngwKgZomcxe0iAZ2fKAA0EGOls6_U339.pngwKgaomcxe1qAfrxVAAuCeu4zIy4182.pngwKgZoWcxe2qATePsAAWQkKXKGAE875.png

6.3 对应log

wKgZoWcxe3yAKoWgABBQ0k3VUIk425.pngwKgaoWcxe5CAKrZGABCehCDardg648.pngwKgZoWcxe6iAI5ZlABZjMnnG8bw881.pngwKgZoWcxe7uALeeiAAxRtZjPjPU997.pngwKgZoWcxe82AQ7YiAAwMIp8vKnM884.pngwKgZomcxe-OAW2aoAAuQV_mY3zY403.pngwKgaomcxe_mAOdNhABBeTr5ex9w649.pngwKgZomcxfBaAaut7ABQSZQ2ZPEc121.png

7、总结

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

更多内容,敬请关注!

审核编辑 黄宇

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

    关注

    15

    文章

    5607

    浏览量

    123268
  • 模组
    +关注

    关注

    6

    文章

    1719

    浏览量

    32021
  • 加解密
    +关注

    关注

    0

    文章

    18

    浏览量

    6692
  • LuatOS
    +关注

    关注

    0

    文章

    134

    浏览量

    2575
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    单片机如何进行加解密钥操作,一般使用哪种形式,具体流程是什么样子的?

    目前单片机如何进行加解密钥操作,一般使用哪种形式,具体流程是什么样子的?
    发表于 12-04 06:09

    AES加解密算法逻辑实现及其在蜂鸟E203SoC上的应用介绍

    这次分享我们会简要介绍AES加解密算法的逻辑实现,以及如何将AES算法做成硬件协处理器集成在蜂鸟E203 SoC上。 AES算法介绍 AES算法属于对称密码算法中的分组密码,其明文/密文分组长度为
    发表于 10-29 07:29

    基于蜂鸟E203的AES加解密NICE协处理单元设计

    作品简介 我们设计了基于NICE接口的AES加解密协处理单元,拓展了6条拓展指令,支持EBC、CBC、、CFB、OFB、CTR五种加密模式,和软件相比,速度提高约2000倍。整体框架如下
    发表于 10-29 06:37

    充电桩核心设备:国网协议4G工业网关深度解读

    什么是国网协议4G工业网关国网协议4G工业网关是由深圳惠志科技研发并推出的,一类专为充电桩对接国网e充电平台的工业级通信设备,主要用于实现现场设备与国网e充电后台系统之间的数据通信与协议对接。通常
    的头像 发表于 07-15 18:00 5134次阅读
    充电桩核心设备:国网协议<b class='flag-5'>4G</b>工业网关<b class='flag-5'>深度</b><b class='flag-5'>解读</b>

    CE31-TD系列4G遥控开关模组核心板方案推荐

    CE31-TD系列4G遥控开关模组核心板凭借其高性能、低延迟、多种控制方式和广泛的应用领域,成为市场上备受瞩目的产品。无论是智能家居、工业自动化还是医疗保健等领域,CE31-TD系列都能为用户提供可靠的解决方案。
    的头像 发表于 07-10 13:50 404次阅读

    harmony-utils之AES,AES加解密

    harmony-utils之AES,AES加解密 harmony-utils 简介与说明 [harmony-utils] 一款功能丰富且极易上手的HarmonyOS工具库,借助众多实用工具类,致力于
    的头像 发表于 06-30 17:30 457次阅读

    harmony-utils之DES,DES加解密

    harmony-utils之DES,DES加解密 harmony-utils 简介与说明 [harmony-utils]一款功能丰富且极易上手的HarmonyOS工具库,借助众多实用工具类,致力于
    的头像 发表于 06-30 17:16 327次阅读

    harmony-utils之RSA,RSA加解密

    harmony-utils之RSA,RSA加解密 harmony-utils 简介与说明 [harmony-utils] 一款功能丰富且极易上手的HarmonyOS工具库,借助众多实用工具类,致力于
    的头像 发表于 06-30 16:52 664次阅读

    harmony-utils之SM4,SM4加解密

    harmony-utils之SM4,SM4加解密 harmony-utils 简介与说明 harmony-utils 一款功能丰富且极易上手的HarmonyOS工具库,借助众多实用工具类,致力于助力
    的头像 发表于 06-28 18:36 557次阅读

    三格电子CAN转4G模组在充电桩的应用

    1、方案背景 充电桩作为电动汽车的基础设施,现在越来越普及,而智能化和远程管理成为趋势。CAN总线在充电桩内部设备通信中的广泛应用,而4G模组则提供了远程连接的能力。结合这两者,CAN转4G
    的头像 发表于 03-05 09:31 714次阅读

    4G核心板_4G智能模组_联发科MTK|高通|紫光展锐4G模块开发

    4G核心板是一种集成了处理器、内存与存储、射频模块、接口等主要组件的小型电路板。它采用开放式的智能Android操作系统,并内置4G通信功能,专为嵌入式系统的核心功能实现而设计。由于核心板本身需要通过底板提供支持,无法单独运行,因此更适合用于各种嵌入式应用场景。
    的头像 发表于 03-04 20:15 998次阅读
    <b class='flag-5'>4G</b>核心板_<b class='flag-5'>4G</b>智能<b class='flag-5'>模组</b>_联发科MTK|高通|紫光展锐<b class='flag-5'>4G</b>模块开发

    掌握4G模组PWM|技术精要

    今天要讲的是4G模组PWM的技术精要,以常用的合宙Air724UG为例做出示例分享给大家。
    的头像 发表于 12-14 09:40 1721次阅读
    掌握<b class='flag-5'>4G</b><b class='flag-5'>模组</b>PWM|技术精要

    掌握4G模组SPI|技术指南

    本次我要分享的是4G模组SPI的技术指南,以合宙Air724UG为例,学完本章帮你实现技术提升。
    的头像 发表于 12-14 09:38 1947次阅读
    掌握<b class='flag-5'>4G</b><b class='flag-5'>模组</b>SPI|技术指南

    4G模组SD卡使用技巧|专家指南

    今天我们学习的是4G模组SD卡使用技巧,以Air724UG为例做出指南供大家参考。
    的头像 发表于 12-14 09:37 1164次阅读
    <b class='flag-5'>4G</b><b class='flag-5'>模组</b>SD卡使用技巧|专家指南

    4G模组GPIO接口实操|精选教程

    今天我将把我熟悉的4G模组GPIO接口实操整理成文,以Air724UG做出精选教程分享给大家。
    的头像 发表于 12-14 09:36 1902次阅读
    <b class='flag-5'>4G</b><b class='flag-5'>模组</b>GPIO接口实操|精选教程