4G模組LuatOS開發的通用加解密函式(crypto)全面解讀

电子老师傅發表於2024-11-26

本文說的是4G模組的通用加解密函式(crypto)全面解讀,我會以咋們常用的低功耗模組Air780E作為例子做LuatOS開發。

一、加解密概述

加解密演算法是保證資料安全的基礎技術,無論是在資料傳輸、儲存,還是使用者身份驗證中,都起著至關重要的作用。隨著網際網路的發展和資訊保安威脅的增加,瞭解並掌握常用的加解密演算法已經成為開發者和安全從業者的必修課。

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

此核心板的詳細使用說明參考:
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/

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 值

引數

返回值

例子

5.2 crypto.hmac_md5(str, key)

計算 hmac_md5 值

引數

返回值

例子

圖片

5.3 crypto.sha1(str)

計算 sha1 值

引數

返回值

例子

5.4 crypto.hmac_sha1(str, key)

計算 hmac_sha1 值

引數

返回值

例子

圖片

5.5 crypto.sha256(str)

計算 sha256 值

引數

返回值

例子

5.6 crypto.hmac_sha256(str, key)

計算 hmac_sha256 值

引數

返回值

例子

5.7 crypto.sha512(str)

計算 sha512 值

引數

返回值

例子

5.8 crypto.hmac_sha512(str, key)

計算 hmac_sha512 值

引數

返回值

例子

5.9 crypto.base64_encode(data)

將資料進行 base64 編碼

引數

返回值

例子

5.10 crypto.base64_decode(data)

將資料進行 base64 解碼

引數

返回值

例子

5.11 crypto.cipher_list()

獲取當前韌體支援的 cipher 列表

引數

返回值

例子

5.12 crypto.cipher_suites()

獲取當前韌體支援的 cipher suites 列表

引數

返回值

例子

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

對稱加密

引數

返回值

例子

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

對稱解密

引數

返回值

例子

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

計算 CRC16

引數

返回值

例子

5.16 crypto.crc16_modbus(data, start)

直接計算 modbus 的 crc16 值

引數

返回值

例子

5.17 crypto.crc32(data)

計算 crc32 值

引數

返回值

例子

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

計算 crc8 值

引數

返回值

例子

5.19 crypto.crc7(data, poly, start)

計算 crc7 值

引數

返回值

例子

5.20 crypto.checksum(data, mode)

計算 checksum 校驗和

引數

返回值

例子

5.21 crypto.trng(len)

生成真隨機數

引數

返回值

例子

5.22 crypto.totp(secret,time)

計算 TOTP 動態密碼的結果

引數

返回值

例子

5.23 crypto.md_file(tp, path, hmac)

計算檔案的 hash 值(md5/sha1/sha256 及 hmac 形式)

引數

返回值

例子

5.24 crypto.md(tp, data, hmac)

計算資料的 hash 值(md5/sha1/sha256 及 hmac 形式)

引數

返回值

例子

5.25 crypto.hash_init(tp)

建立流式 hash 用的 stream

引數

返回值

例子

5.26 crypto.hash_update(stream, data)

流式 hash 更新資料

引數

返回值

例子

5.27 crypto.hash_finish(stream)

獲取流式 hash 校驗值並釋放建立的 stream

引數

返回值

例子

六、功能驗證

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 右上角的“專案管理測試”按鈕,如下圖所示:

這時會彈出專案管理和燒錄管理的對話方塊,可以新建一個專案,如下圖:

開始燒錄

選擇 Air780E 板子對應的底層 core 和剛改的 main.lua 指令碼檔案.下載到板子中.

點選下載後,我們需要進入 BOOT 模式才能正常下載.

如果沒進入 BOOT 模式會出現下圖情況:

進入 BOOT 模式下載,如圖:

6.2 例程

參考以下示例,本庫有專屬 demo,複製連結檢視 crypto 的 demo 例子:
https://gitee.com/openLuat/LuatOS-Air780E/tree/master/demo/crypto)

6.3 對應 log

分享完畢。

相關文章