首页 > 其他分享 >干货分享:通用加解密函数(crypto),Air780E篇

干货分享:通用加解密函数(crypto),Air780E篇

时间:2024-11-10 08:48:39浏览次数:1  
标签:解释 string 加解密 crypto 类型 返回值 Air780E hmac

一、加解密概述

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

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

三种分类:

1.1 对称加密

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

1.2 Hash算法

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

1.3 非对称加密

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

二、请输入标题

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

三、硬件准备

3.1 Air780E核心板

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

图片

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

3.2 SIM卡

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

3.3 数据通信线

带TYPE-C口的USB数据线。

3.4 PC电脑

WINDOWS系统。

四、软件环境

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/

图片

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

图片

4.2.2 烧录的脚本代码

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

下载流程参考下图:

图片

图片

下载的文件解压,找到

LuatOS-Air780E-master\demo\crypto\main.lua,如图:

图片

五、API说明

5.1 crypto.md5(str)

计算md5值

参数

 

传入值类型 解释

string

需要计算的字符串

返回值

返回值类型 解释

string

计算得出的md5值的hex字符串

例子

图片

5.2 crypto.hmac_md5(str,key)

计算hmac_md5值

参数

传入值类型 解释

string

需要计算的字符串

string

密钥

返回值

返回值类型 解释

string

计算得出的hmac_md5值的hex字符串

例子

图片

5.3 crypto.sha1(str)

计算sha1值

参数

传入值类型 解释

string

需要计算的字符串

返回值

返回值类型 解释

string

计算得出的sha1值的hex字符串

例子

图片

5.4 crypto.hmac_sha1(str,key)

计算hmac_sha1值

参数

传入值类型 解释

string

需要计算的字符串

string

密钥

返回值

返回值类型 解释

string

计算得出的hmac_sha1值的hex字符串

 

例子

图片

5.5 crypto.sha256(str)

计算sha256值

参数

传入值类型 解释

string

需要计算的字符串

返回值

返回值类型 解释

string

计算得出的sha256值的hex字符串

例子

图片

5.6 crypto.hmac_sha256(str,key)

计算hmac_sha256值

参数

传入值类型 解释

string

需要计算的字符串

string

密钥

返回值

返回值类型 解释

string

计算得出的hmac_sha256值的hex字符串

例子

图片

5.7 crypto.sha512(str)

计算sha512值

参数

传入值类型 解释

string

需要计算的字符串

返回值

返回值类型 解释

string

计算得出的sha512值的hex字符串

例子

图片

5.8 crypto.hmac_sha512(str,key)

计算hmac_sha512值

参数

传入值类型 解释

string

需要计算的字符串

string

密钥

返回值

返回值类型 解释

string

计算得出的hmac_sha512值的hex字符串

例子

图片

5.9 crypto.base64_encode(data)

将数据进行base64编码

参数

传入值类型 解释

string

待编码的数据

返回值

返回值类型 解释

string

编码后的数据

例子

图片

5.10 crypto.base64_decode(data)

将数据进行base64解码

参数

传入值类型 解释

string

待解码的数据

返回值

返回值类型 解释

string

解码后的数据

例子

图片

5.11 crypto.cipher_list()

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

参数

返回值

返回值类型 解释

table

本固件支持的cipher列表,字符串数组

例子

图片

5.12 crypto.cipher_suites()

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

参数

返回值

返回值类型 解释

table

本固件支持的ciphersuites列表,字符串数组

例子

图片

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

加密后的字符串

例子

图片

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

解密后的字符串

例子

图片

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值

例子

图片

5.16 crypto.crc16_modbus(data,start)

直接计算modbus的crc16值

参数

传入值类型 解释

string

数据

int

初始化值,默认0xFFFF

返回值

返回值类型 解释

int

对应的CRC16值

例子

图片

5.17 crypto.crc32(data)

计算crc32值

参数

传入值类型 解释

string

数据

返回值

返回值类型 解释

int

对应的CRC32值

例子

图片

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

计算crc8值

参数

传入值类型 解释

string

数据

int

crc多项式,可选,如果不写,将忽略除了数据外所有参数

int

crc初始值,可选,默认0

boolean

是否需要逆序处理,默认否

返回值

返回值类型 解释

int

对应的CRC8值

例子

图片

5.19 crypto.crc7(data,poly,start)

计算crc7值

参数

传入值类型 解释

string

数据

int

crc多项式,可选,默认0xE5

int

crc初始值,可选,默认0x00

返回值

返回值类型 解释

int

对应的CRC7值

例子

图片

5.20 crypto.checksum(data,mode)

计算checksum校验和

参数

传入值类型 解释

string

待计算的数据,必选

int

模式,累加模式,0-异或,1-累加,默认为0

返回值

返回值类型 解释

int

checksum值,校验和

例子

图片

5.21 crypto.trng(len)

生成真随机数

参数

传入值类型 解释

int

数据长度

返回值

返回值类型 解释

string

指定随机数字符串

例子

图片

5.22 crypto.totp(secret,time)

计算TOTP动态密码的结果

参数

传入值类型 解释

string

网站提供的密钥(就是BASE32编码后的结果)

int

可选,时间戳,默认当前时间

返回值

返回值类型 解释

int

计算得出的六位数结果计算失败返回nil

例子

图片

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值,若失败会无返回值

例子

图片

5.24 crypto.md(tp,data,hmac)

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

参数

传入值类型 解释

string

hash类型,大小字母,例如“MD5”“SHA1”“SHA256”

string

待处理的数据

string

hmac值,可选

返回值

返回值类型 解释

string

HEX过的hash值,若失败会无返回值

例子

图片

5.25 crypto.hash_init(tp)

创建流式hash用的stream

参数

传入值类型 解释

string

hash类型,大写字母,例如“MD5”“SHA1”“SHA256”

string

hmac值,可选

返回值

返回值类型 解释

userdata

成功返回一个数据结构,否则返回nil

例子

图片

5.26 crypto.hash_update(stream,data)

流式hash更新数据

参数

传入值类型 解释

userdata

crypto.hash_init()创建的stream,必选

string

待计算的数据,必选

return

返回值

例子

图片

5.27 crypto.hash_finish(stream)

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

参数

传入值类型 解释

userdata

crypto.hash_init()创建的stream,必选

返回值

返回值类型 解释

string

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

例子

图片

六、功能验证

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

图片

6.1.3 识别电脑的正确端口

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

图片

6.1.4 用Luatools工具烧录

  • 新建项目

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

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

图片

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

图片

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

图片

  • 开始烧录

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

图片

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

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

图片

进入boot模式下载,如图:

图片

图片

6.2 例程

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

图片

6.3 对应log

图片

七、总结

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

标签:解释,string,加解密,crypto,类型,返回值,Air780E,hmac
From: https://www.cnblogs.com/luatos/p/18537611

相关文章

  • 干货分享:Air780E软件指南:字符串处理
    一、Lua字符串介绍关于字符串,Lua提供了一些灵活且强大的功能,一些入门知识如下:1.1字符串定义在Lua中,字符串可以用单引号'或双引号"来定义。例如:localstr1='Hello,World!'localstr2="Hello,Lua!"1.2字符串长度可以使用#操作符获取字符串的长度。例如:locallength=#"H......
  • Air780E软件指南:C语言内存数组(zbuff)
    一、ZBUFF(C内存数组)简介zbuff库可以用c风格直接操作(下标从0开始),例如buff[0]=buff[3]可以在sram上或者psram上申请空间,也可以自动申请(如存在psram则在psram进行申请,如不存在或失败则在sram进行申请)。操作里面的元素时,可以根据光标进行增删改查。偏移方式有三种:从头......
  • Air780E软件指南:UDP应用示例
    一、UDP概述UDP(用户数据报协议,UserDatagramProtocol)是一种无连接的、不可靠的传输层协议,主要用于实现网络中的快速通讯。以下是UDP通讯的主要特点:1.1无连接通讯:UDP在发送数据之前不需要建立连接,这大大减少了通讯的延迟。发送方只需将数据包封装成UDP报文,并附上目的地址......
  • Air780E软件指南:zlib解压示例
    一、ZLIB解压工具简介Zlib解压工具是一个广泛使用的压缩和解压缩库,主要用于处理数据的压缩和解压缩任务。Zlib使用的是DEFLATE算法,这是一种通用的压缩算法。它被应用在很多场景中,比如压缩文件、网络传输中的数据压缩、以及各种应用程序中的数据存储和读取。Zlib的代码库相......
  • 华为机试HJ29 字符串加解密
    首先看一下题描述对输入的字符串进行加解密,并输出。加密方法为:当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;其他字符不做变化。解密方法为加密的逆过程。......
  • 知识分享:Air780E软件之UDP应用示例
    一、UDP概述UDP(用户数据报协议,UserDatagramProtocol)是一种无连接的、不可靠的传输层协议,主要用于实现网络中的快速通讯。以下是UDP通讯的主要特点:1.1无连接通讯:UDP在发送数据之前不需要建立连接,这大大减少了通讯的延迟。发送方只需将数据包封装成UDP报文,并附上目的地址......
  • Air780E的I2C软件使用指南
    ​ 今天我们学习合宙低功耗4G模组Air780E的I2C接口操作方法,文末【阅读原文】获取最新资料。一、I2C概述Air780E可支持1路I2C接口,如果复用的话最多有两路: ​I2C配置:兼容PhilipsI2C标准协议。支持Fastmode(400Kbps)和Slowmode(100Kbps)。只支持master模式,不支持slaver模式......
  • 简单的C语言数据加解密算法实现与探讨
    在数据安全日益重要的今天,加密技术成为了保护信息不被未授权访问或篡改的重要手段。虽然在实际应用中,我们通常会采用如AES、RSA等复杂的加密算法,但理解加密的基本原理和实现一个简单的加密算法对于学习计算机安全基础至关重要。本文将介绍如何使用C语言实现一个基于简单替换加密(Su......
  • Air780E如何发送SMS?一文详解!
    ​今天一起来学习使用合宙低功耗4G模组Air780E发送SMS短消息:一、SMS简介SMS(短消息服务,ShortMessageService)功能主要用于在蜂窝网络中传输短消息。在4G网络中,短信可以在数据传输的同时进行,不会因数据业务占用网络资源而被延迟或阻塞。在Air780E模块中,当收到新短信后,MAIN_RI变......
  • Air780EP之RC522开发板,你了解吗?
    ​本文讲解合宙Air780EP开发板RC522实例。本文档适用于Air780EP开发板;关联文档和使用工具;rc522-rc522非接触式读写卡驱动-LuatOS文档;LuatOS-Soc固件获取https://gitee.com/openLuat/LuatOS/releases一、环境准备1.1Air780EP开发板一套 1.2rc522实物一个 ​......