0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于4G模組LuatOS開發(fā):通用加解密函數(shù)(crypto)|全攻略

合宙LuatOS ? 來源:合宙LuatOS ? 作者:合宙LuatOS ? 2024-11-30 09:52 ? 次閱讀

本次我要說的攻略是關(guān)于4G模組LuatOS開發(fā)的通用加解密函數(shù),我以我常用的Air780E模組為例子供大家參考。

一、加解密概述

加解密算法是保證數(shù)據(jù)安全的基礎(chǔ)技術(shù),無論是在數(shù)據(jù)傳輸、存儲(chǔ),還是用戶身份驗(yàn)證中,都起著至關(guān)重要的作用。隨著互聯(lián)網(wǎng)的發(fā)展和信息安全威脅的增加,了解并掌握常用的加解密算法已經(jīng)成為開發(fā)者和安全從業(yè)者的必修課。

常見的15種加密解密算法分別是:散列哈希[MD5、SHA1、CRC32],對(duì)稱[DES,3DES(TDEA、Triple DES),AES、,Blowfish,RC4、RC5,IDEA],Base64、Rabbit、Escape。

【三種分類】

1、對(duì)稱加密:
對(duì)稱加密是指加密和解密使用同一個(gè)密鑰的加密方法.由于加密和解密過程中的密鑰相同,因此需要在通信雙方之間安全地共享密鑰.對(duì)稱加密的速度較快,適合用于大量數(shù)據(jù)的加密

2、非對(duì)稱加密:
非對(duì)稱加密算法采用一對(duì)密鑰:公鑰和私鑰.公鑰用于加密,私鑰用于解密.由于加密和解密使用不同的密鑰,非對(duì)稱加密算法解決了密鑰分發(fā)的問題,是當(dāng)前加密系統(tǒng)中安全性最高的加密技術(shù)之一.

3、Hash算法:
這是一種不可逆的算法,它常用于驗(yàn)證數(shù)據(jù)的完整性

二、演示功能概述

本文章通過 Air780 的核心板燒錄 LuatOS 示例代碼,來演示有關(guān)加解密的各種 API 的功能。

https://gitee.com/openLuat/LuatOS-Air780E/tree/master/demo/crypto
(復(fù)制鏈接查看 crypto 的 demo 例子)

API 的具體用法,讀者可以參考本文中的"五、API 說明"。

三、硬件準(zhǔn)備

3.1 Air780E 核心板

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

wKgaomdArT-AfrbJAAKOrZmcZ2o656.png

此核心板的詳細(xì)使用說明參考:
https://docs.openluat.com/air780e/product/

Air780E產(chǎn)品手冊(cè)中的 《開發(fā)板Core_Air780E使用說明》,寫這篇文章時(shí)最新版本的使用說明為:《開發(fā)板Core_Air780E使用說明》;若在使用過程中遇到任何問題,可以直接參考這份使用說明文檔。

3.2 SIM

中國大陸環(huán)境下,可以上網(wǎng)的sim卡,一般來說,使用移動(dòng)、電信、聯(lián)通的物聯(lián)網(wǎng)卡或者手機(jī)卡都行。

3.3 PC 電腦

請(qǐng)準(zhǔn)備一臺(tái)配備 USB 接口且能夠正常上網(wǎng)的電腦。

電腦操作系統(tǒng)為:
WIN10以及以上版本的WINDOWS系統(tǒng)。

3.4 數(shù)據(jù)通信線

TYPE-C口的USB數(shù)據(jù)線.

四、軟件環(huán)境

4.1 Luatools 工具

要想燒錄 LuatOS 到 4G 模組中,需要用到的調(diào)試工具:Luatools

詳細(xì)使用說明參考:
Luatools工具使用說明:
https://docs.openluat.com/Luatools/

Luatools 工具集具備以下幾大核心功能:

一鍵獲取最新固件:自動(dòng)連接服務(wù)器,輕松下載最新的模組固件.

固件與腳本燒錄:便捷地將固件及腳本文件燒錄至目標(biāo)模組中.

串口日志管理:實(shí)時(shí)查看模組通過串口輸出的日志信息,并支持保存功能.

串口調(diào)試助手:提供簡潔的串口調(diào)試界面,滿足基本的串口通信測試需求.

Luatools下載之后,新建一個(gè)命名為 "Luatools" 的文件夾,將下載的Luatools_v3.exe拷貝或移動(dòng)到新建的Luatools文件夾內(nèi),點(diǎn)擊 Luatools_v3.exe 即可運(yùn)行。

4.2 準(zhǔn)備需要燒錄的代碼

首先要說明一點(diǎn):腳本代碼, 要和固件的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 示例代碼到一個(gè)合適的項(xiàng)目目錄,
示例代碼網(wǎng)站:
https://gitee.com/openLuat/LuatOS-Air780E

下載流程參考下圖:

wKgZomdArYOAE_rHAAMgFRcCty4731.pngwKgZomdArY-AAcFGAALwduayCdQ616.png

下載的文件解壓,找到 LuatOS-Air780E-masterdemocryptomain.lua,如圖:

wKgaomdArZ2ARFMKAAEKgmuMwhE113.png

五、API 說明

5.1 crypto.md5(str)

計(jì)算 md5 值

參數(shù)

wKgZomdArbaALNgkAAAyO8xtoQA829.png

返回值

wKgaomdArcKAa2e9AABAU4vfpZY780.png

例子

wKgZomdArc2AK7jxAACOQXNWlOg085.png

5.2 crypto.hmac_md5(str, key)

計(jì)算 hmac_md5 值

參數(shù)

wKgaomdArdiAE8LkAABDcnBiWUg608.png

返回值

wKgaomdAreOAIVh7AABEFhFqA48289.png

例子

wKgZomdAre2ATwjxAAC-hC7H1wI097.png

5.3 crypto.sha1(str)

計(jì)算 sha1 值

參數(shù)

wKgaomdArfiAaynkAAAx455FjfI810.png

返回值

wKgZomdArgKAKT1GAABAuE6741k605.png

例子

wKgZomdArg2ALnvxAACPxu2wifU467.png

5.4 crypto.hmac_sha1(str, key)

計(jì)算 hmac_sha1 值

參數(shù)

wKgaomdArheAKYNVAABDSOWLfII484.png

返回值

wKgZomdAriKAI_XXAABHpVg6dmQ465.png

例子

wKgaomdAriyAAxNgAADBdhUExXs462.png

5.5 crypto.sha256(str)

計(jì)算 sha256 值

參數(shù)

wKgZomdArjaAYR24AAAw0pu6p1k848.png

返回值

wKgaomdArkCAc249AABBVhbIKJM657.png

例子

wKgZomdArkmAGsO_AACd3miq-Ms896.png

5.6 crypto.hmac_sha256(str, key)

計(jì)算 hmac_sha256 值

參數(shù)

wKgaomdArlOAU44sAABC3Wwv-Yg976.png

返回值

wKgZomdArlyAEWfdAABFQSfBytM809.png

例子

wKgZomdArmqAAAj-AADUmm1GZh8036.png

5.7 crypto.sha512(str)

計(jì)算 sha512 值

參數(shù)

wKgaomdArnSAR2s4AAAzrk6K7CU956.png

返回值

wKgZomdArn2AA4ghAAA_ySzT2W0092.png

例子

wKgaomdAroaAazDYAACdSjJ2xNE261.png

5.8 crypto.hmac_sha512(str, key)

計(jì)算 hmac_sha512 值

參數(shù)

wKgaomdArpKAEO-fAABGDDGtKYs096.png

返回值

wKgZomdArpmAHX6oAABJyXXo494621.png

例子

wKgZomdArqKAB5_zAADUW_hepaM259.png

5.9 crypto.base64_encode(data)

將數(shù)據(jù)進(jìn)行 base64 編碼

參數(shù)

wKgaomdArqyAYbcGAAAwLDPBSJE000.png

返回值

wKgZomdArraAakHuAAAwTjMOsEs894.png

例子

wKgaomdArsOAQcekAAHDQxNexu8653.png

5.10 crypto.base64_decode(data)

將數(shù)據(jù)進(jìn)行 base64 解碼

參數(shù)

wKgaomdArs2AXwklAAAvi3_3Uaw856.png

返回值

wKgZomdArtWAFtqYAAAvziw2344947.png

例子

wKgZomdAruCABq7vAAHKHTjFWAA132.png

5.11 crypto.cipher_list()

獲取當(dāng)前固件支持的 cipher 列表

參數(shù)

返回值

wKgaomdAruuAQITTAABGfHRcw-k774.png


例子

wKgaomdArvaARqu5AAE78LG-Yq0848.png

5.12 crypto.cipher_suites()

獲取當(dāng)前固件支持的 cipher suites 列表

參數(shù)

返回值

wKgZomdArwCAeFJIAABHuDxNlEo059.png


例子

wKgaomdArwuAXJb4AAE4UelLhrE173.png

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

對(duì)稱加密

參數(shù)

wKgZomdArxWAIUxRAADpfHqaqCQ260.png


返回值

wKgZomdArx6AO2OAAAAx9ncYC5I356.png

例子

wKgaomdAryiABqCuAAHIED3Yn_Q667.png

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

對(duì)稱解密

參數(shù)

wKgZomdArzKAKRs3AADvv8JdXHU642.png


返回值

wKgaomdArzyAFufzAAAu5LLS47o935.png

例子

wKgZomdAr0aAG0MIAAJI5aFeQaM297.png

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

計(jì)算 CRC16

參數(shù)

wKgZomdAr1GAbNg2AACcc-kCY0I735.png


返回值

wKgaomdAr1mAQiTaAAAuEM_KjFk606.png

例子

wKgZomdAr2KAKVcOAABqelEWI7s248.png

5.16 crypto.crc16_modbus(data, start)

直接計(jì)算 modbus 的 crc16 值

參數(shù)

wKgZomdAr22Ad3JQAABGy5zfm7E071.png

返回值

wKgZomdAr3eABwvZAAAsMvPWM8U340.png

例子

wKgaomdAr4GAWb0bAAEYKgtN9-k929.png

5.17 crypto.crc32(data)

計(jì)算 crc32 值

參數(shù)

wKgZomdAr5aAbfNjAAAoAntVK2c803.png

返回值

wKgaomdAr6eASc-oAAAvZhse4xY321.png

例子

wKgaomdAr7CAcaX1AABtswPSYU8464.png

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

計(jì)算 crc8 值

參數(shù)

wKgZomdAr72AWXJuAACoIMAKy_o402.png

返回值

wKgZomdAr8WAUYPwAAAwzZXcjV4294.png

例子

wKgaomdAr8-APBLxAADISFp8S_4184.png

5.19 crypto.crc7(data, poly, start)

計(jì)算 crc7 值

參數(shù)

wKgaomdAr9mAQrxOAABrUuZJ_YY295.png

返回值

wKgZomdAr-KAFyThAAAxIQm6I-w082.png

例子

wKgaomdAr-uAAmNeAADlXNrEG1g484.png

5.20 crypto.checksum(data, mode)

計(jì)算 checksum 校驗(yàn)和

參數(shù)

wKgZomdAr_WATsWRAABh0PNii94442.png

返回值

wKgaomdAr_-ALYcpAAAvW5hSybg850.png

例子

wKgZomdAsAqAAcUwAAFRnu_9MOE923.png

5.21 crypto.trng(len)

生成真隨機(jī)數(shù)

參數(shù)

wKgZomdAsBKAUqzaAAApijCdK7s652.png

返回值

wKgaomdAsByAK8xXAAA15wTqnLM061.png

例子

wKgZomdAsCWAJlOMAAC0DMd1QCY315.png

5.22 crypto.totp(secret,time)

計(jì)算 TOTP 動(dòng)態(tài)密碼的結(jié)果

參數(shù)

wKgaomdAsC6AH6TgAAB0UULUhZo796.png

返回值

wKgZomdAsDeAEbnfAABFbjvlLbQ652.png

例子

wKgaomdAsECAdHFSAAEJpYmVM9o372.png

5.23 crypto.md_file(tp, path, hmac)

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

參數(shù)

wKgaomdAsEqATWUNAACNLZl5BlU475.png

返回值

wKgZomdAsFiAF62BAABDBRj1Xz4996.png

例子

wKgaomdAsGKAaMU6AAOVbj9DJio054.png

5.24 crypto.md(tp, data, hmac)

計(jì)算數(shù)據(jù)的 hash 值(md5/sha1/sha256 及 hmac 形式)

參數(shù)

wKgZomdAsGyAD68tAACAQgrFtBM659.png

返回值

wKgaomdAsHSAQAccAABIq_N6jIQ698.png

例子

wKgaomdAsH6AaWZoAAMMNk_mTKQ485.png

5.25 crypto.hash_init(tp)

創(chuàng)建流式 hash 用的 stream

參數(shù)

wKgZomdAsIeAUL2RAABnzZp3jIg756.png

返回值

wKgaomdAsJGAVHeBAABDWbMga8M946.png

例子

wKgZomdAsJyAd5beAAK_Yt6shNQ729.png

5.26 crypto.hash_update(stream, data)

流式 hash 更新數(shù)據(jù)

參數(shù)

wKgZomdAsKaAX_ObAABy3lt8QX4344.png

返回值

例子

wKgaomdAsLCAGT0BAABW2qIezks957.png

5.27 crypto.hash_finish(stream)

獲取流式 hash 校驗(yàn)值并釋放創(chuàng)建的 stream

參數(shù)

wKgZomdAsLmAQwZ9AABGt1gcBU8829.png


返回值

wKgaomdAsMKANb7IAABaZJ1MmDc550.png


例子

wKgZomdAsMyAOyOcAABs_s3AuCA311.png

六、功能驗(yàn)證

6.1 燒錄固件

6.1.1正確連接電腦和 4G 模組電路板

使用帶有數(shù)據(jù)通信功能的數(shù)據(jù)線,不要使用僅有充電功能的數(shù)據(jù)線.

6.1.2識(shí)別 4G 模組的 BOOT 引腳

在下載之前,要用模組的 BOOT 引腳觸發(fā)下載, 也就是說,要把 4G 模組的 BOOT 引腳拉到 1.8v,或者直接把 BOOT 引腳和 VDD_EXT 引腳相連.我們要在按下 BOOT 按鍵時(shí)讓模塊開機(jī),就可以進(jìn)入下載模式了.

具體到 Air780E 開發(fā)板:

1、當(dāng)我們模塊沒開機(jī)時(shí),按著 BOOT 鍵然后長按 POW 開機(jī).

2、當(dāng)我們模塊開機(jī)時(shí),按著 BOOT 鍵然后點(diǎn)按重啟鍵即可.

wKgaomdAsN6APGYiABKDu5xdUyo118.png

6.1.3識(shí)別電腦的正確端口

判斷是否進(jìn)入 BOOT 模式:模塊上電,此時(shí)在電腦的設(shè)備管理器中,查看串口設(shè)備, 會(huì)出現(xiàn)一個(gè)端口表示進(jìn)入了 BOOT 下載模式,如下圖所示:

wKgaomdAsOqAc0X7AAK63P3VWQ4547.png

6.1.4 用 Luatools 工具燒錄

新建項(xiàng)目

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

在 Luatools 的左上角上有版本顯示的,如圖所示:

wKgZomdAsPWAB7wkAAE_KN0DZGQ396.png

Luatools 版本沒問題的話, 就點(diǎn)擊 Luatools 右上角的“項(xiàng)目管理測試”按鈕,如下圖所示:

wKgaomdAsP-AN6O7AAD6xYLIJL0944.png

這時(shí)會(huì)彈出項(xiàng)目管理和燒錄管理的對(duì)話框,可以新建一個(gè)項(xiàng)目,如下圖:

wKgZomdAsRSAT-zRAAP3HTX_8d8777.png

開始燒錄

選擇 Air780E 板子對(duì)應(yīng)的底層 core 和剛改的 main.lua 腳本文件.下載到板子中.

wKgZomdAsR-AD2CpAAQgpPagDwo540.png

點(diǎn)擊下載后,我們需要進(jìn)入 BOOT 模式才能正常下載.

如果沒進(jìn)入 BOOT 模式會(huì)出現(xiàn)下圖情況:

wKgaomdAsS2AVLqZAACYtI3aKjg561.png

進(jìn)入 BOOT 模式下載,如圖:

wKgZomdAsT2Ad6HjAAOYThkAh7s481.png

6.2 例程

參考以下示例,本庫有專屬 demo,復(fù)制鏈接查看 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 對(duì)應(yīng) log

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

分享完畢。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4331

    瀏覽量

    62618
  • 模組
    +關(guān)注

    關(guān)注

    6

    文章

    1492

    瀏覽量

    30390
  • 加密解密算法
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    1616
  • LuatOS
    +關(guān)注

    關(guān)注

    0

    文章

    76

    瀏覽量

    1941
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    MCU解密全攻略

    MCU解密全攻略
    發(fā)表于 08-19 14:28

    FPGA開發(fā)全攻略——上冊(cè).rar

    FPGA開發(fā)全攻略——上冊(cè).rar
    發(fā)表于 04-08 10:44

    FPGA開發(fā)全攻略_下.pdf

    FPGA開發(fā)全攻略_下.pdf
    發(fā)表于 04-08 10:48

    FPGA開發(fā)全攻略

    FPGA開發(fā)全攻略
    發(fā)表于 05-10 11:40

    FPGA開發(fā)全攻略

    電子工程師創(chuàng)新設(shè)計(jì)必備寶典系列之FPGA開發(fā)全攻略上,下兩冊(cè)
    發(fā)表于 04-24 21:11

    32位MCU開發(fā)全攻略

    32位MCU開發(fā)全攻略上下兩冊(cè) ,主要講述32位MCU應(yīng)用開發(fā)知識(shí)
    發(fā)表于 05-04 15:42

    FPGA開發(fā)全攻略

    FPGA開發(fā)全攻略
    發(fā)表于 09-27 10:59

    FPGA開發(fā)全攻略實(shí)用教程精粹

    FPGA開發(fā)全攻略實(shí)用教程精粹
    發(fā)表于 09-28 13:50

    FPGA開發(fā)全攻略

    FPGA開發(fā)全攻略
    發(fā)表于 05-21 09:28

    FPGA開發(fā)全攻略

    FPGA開發(fā)全攻略
    發(fā)表于 03-03 10:30

    FPGA開發(fā)全攻略

    FPGA開發(fā)全攻略
    發(fā)表于 03-07 11:46

    MCU解密全攻略

    本內(nèi)容介紹了MCU解密全攻略教程
    發(fā)表于 07-11 17:51 ?648次下載
    MCU<b class='flag-5'>解密</b><b class='flag-5'>全攻略</b>

    FPGA開發(fā)全攻略_上

    FPGA開發(fā)全攻略_上有需要的朋友下來看看。
    發(fā)表于 05-10 11:21 ?29次下載

    4G模組加解密藝術(shù):通用函數(shù)的深度解讀

    今天是對(duì)加解密通用函數(shù)的深度解讀,我將詳細(xì)講解,建議收藏,不可錯(cuò)過。
    的頭像 發(fā)表于 11-12 09:58 ?244次閱讀
    <b class='flag-5'>4G</b><b class='flag-5'>模組</b><b class='flag-5'>加解密</b>藝術(shù):<b class='flag-5'>通用</b><b class='flag-5'>函數(shù)</b>的深度解讀

    4G模組Air780E的LuatOS開發(fā)關(guān)于通用加解密函數(shù)(crypto)教程!

    本次我將講解低功耗4G模組Air780E的LuatOS開發(fā),關(guān)于通用
    的頭像 發(fā)表于 12-01 15:50 ?209次閱讀
    <b class='flag-5'>4G</b><b class='flag-5'>模組</b>Air780E的<b class='flag-5'>LuatOS</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>關(guān)于</b><b class='flag-5'>通用</b><b class='flag-5'>加解密函數(shù)</b>(<b class='flag-5'>crypto</b>)教程!