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

news/2024/11/13 8:00:50/文章来源:https://www.cnblogs.com/luatos/p/18537611
一、加解密概述

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

常见的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)等等函数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/830418.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker仓库之Harbor企业级镜像仓库的搭建与使用

本章将和大家分享Docker仓库之Harbor企业级镜像仓库的搭建与使用。本章将和大家分享Docker仓库之Harbor企业级镜像仓库的搭建与使用。废话不多说,下面我们直接进入主题。 一、企业最爱:Harbor企业级镜像仓库 Harbor是VMware公司开源的一个企业级Docker Registry项目,项目地址…

面试:什么是死锁,如何避免或解决死锁;MySQL中的死锁现象,MySQL死锁如何解决

面试:什么是死锁,死锁产生的四个必要条件,如何避免或解决死锁;数据库锁,锁分类,控制事务;MySQL中的死锁现象,MySQL死锁如何解决文章目录 前言 一、死锁1.1 什么是死锁 1.2 死锁产生的四个必要条件 1.3 模拟产生死锁的代码 1.4 死锁的产生原因二、如何避免或解决死锁2.1…

23. 使用MySQL之使用存储过程

1. 存储过程 迄今为止,使用的大多数SQL语句都是针对一个或多个表的单条语句。并非所有操作都这么简单,经常会有一个完整的操作需要多条语句才能完成。 例如,考虑以下的情形。为了处理订单,需要核对以保证库存中有相应的物品。如果库存有物品,这些物品需要预定以便不将它们…

【java开发】 Java 打包方式总结

前言 由于笔者之前也一直在使用 IDEA, Maven 等成熟工具|框架的打包方式, 也没有仔细研究过这个 JAR 包打包之中的细节, 网上公开的视频也没有找到, 但文章倒挺多的, 那周六日就简单看一下吧, 将这些打包方式都整理整理. 本篇文章彻底理解 Maven & IDEA & 原生的打包方…

分享一套基于thinkphp开发的小说内容管理系统源码,附安装教程,100%开源。

小说内容管理系统系统介绍小说内容管理系统是一套用于快速构建小说发布与阅读的小说内容管理平台。使用小说内容管理系统可以快速搭建一个完整的小说阅读网站,节省开发时间和成本。 小说内容管理系统是一套基于ThinkPHP6 + MySql + Layui + BUI 开发的小说行业内容管理系统。 …

【数据库】Cassandra的安装及基本操作

Cassandra 数据库安装 官方文档 安装环境Ubuntu 22.04.5LTS Cassandra 4.0.14 JDK 11操作步骤下载安装包curl -OL https://dlcdn.apache.org/cassandra/4.0.14/apache-cassandra-4.0.14-bin.tar.gz解压操作解压tar -zxvf ./apache-cassandra-4.0.14-bin.tar.gz运行数据库,该步…

【数据库】GeoMesa的安装及基本操作

GeoMesa-Cassandra 安装 官方文档_安装 GeoMesa Cassandra 安装环境Ubuntu 22.04.5 LTS Cassandra 3.11.16 JDK 11 geomesa-cassandra_2.12-5.1.0操作步骤下载 bin文件 wget https://github.com/locationtech/geomesa/releases/download/geomesa-5.1.0/geomesa-cassandra_2.12-…

【数据库】GeoServer的安装及基本操作

GeoServer 安装 参考: WSL-Ubuntu22.04 安装Geoserver流程 方式一:采用Tomcat的方式安装GeoServer 下载curl -OL https://sourceforge.net/projects/geoserver/files/GeoServer/2.26.0/geoserver-2.26.0-war.ziphttp://localhost:8080/http://localhost:8080/geoserver/方式二…

【java开发】 java web的Filter(过滤器),Interceptor(拦截器) 和 Aspect(切面)

“ 在Java Web开发中,始终离不开Filter,Interceptor,Aspect三个部分,本文将对此进行介绍。” Filter 是servlet层面的,由Servlet容器(如Tomcat)支持,只能在web程序中使用,实现了javax.servlet.Filter接口 Interceptor 是Spring Web层面的(Structs也有), 它是由Spring容器…

Tesla Model Y refresh All In One

Tesla Model Y refresh All In One Tesla Model Y Juniper / Tesla Model Y 焕新版Tesla Model Y refresh All In OneTesla Model Y Juniper / Tesla Model Y 焕新版demoshttps://www.youtube.com/watch?v=WWou0YzxJ7Yhttps://topelectricsuv.com/news/tesla/2024-tesla-model…

【开源系列】Loki 与 Promtail 实现轻量级日志管理系统

1、简介 Grafana Loki 是一个用于日志聚合和分析的开源工具,专为云原生环境设计,与 Grafana 无缝集成,能够高效地收集、存储和查询日志。以下是如何使用 Grafana Loki 收集日志的详细步骤。 2、环境准备 确保你已经安装了以下组件: Docker(用于容器化部署)Grafana(用于可…

【学习软件】【疯狂地理Beta1.0.0】

【前言】 近期,使用Unity开发了一款有关中国地理知识的App,目前仅支持Android,用于自己学习。知识要活学活用才行。【软件截图】 【下载地址】 https://rere.lanzoue.com/iiblf2eochmh密码:5jvy【敬畏能量 敬畏自然】