低功耗4G模组:RSA算法示例

luatos / 2024-10-29 / 原文

今天我们学习合宙低功耗4G模组Air780EP_LuatOS_rsa示例,文末【阅读原文】获取最新资料。

一、简介

RSA算法的安全性基于:将两个大质数相乘很容易,但是想要将其乘积分解成原始的质数因子却非常困难。

  • 关联文档和使用工具:

  • LuatOS 固件获取

  • rsa-demo

  • Luatools下载调试工具

  • 开发板Core_Air780EP使用说明

二、材料准备

2.1 Air780EP开发板一套

 

三、程序介绍

API说明

RSA加密

rsa.encrypt(key, data)

参数

传入值类型 解释

string

公钥数据,仅支持PEM格式

string

待加密数据, 不能超过公钥位数的一半, 例如 2048bit的公钥, 只能加密128字节的数据

返回值

返回值类型 解释

string

加密成功后的数据,若失败会返回nil

RSA解密

rsa.decrypt(key, data, pwd)

参数

传入值类型 解释

string

私钥数据,仅支持PEM格式

string

待解密数据

string

私钥的密码,可选

返回值

返回值类型 解释

string

解密成功后的数据,若失败会返回nil

计算sha1值

crypto.sha1(str)

参数

传入值类型 解释

string

需要计算的字符串

返回值

返回值类型 解释

string

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

RSA签名

rsa.sign(key, md, hash, pwd)

参数

传入值类型 解释

string

私钥数据,仅支持PEM格式

int

签名模式, 例如 rsa.MD_SHA1 , rsa.MD_SHA256

string

hash数据, 如果是HEX字符串,记得fromHex转二进制数据

string

私钥密码, 可选

返回值

返回值类型 解释

string

成功返回sig数据, 否则返回nil

RSA验签

rsa.verify(key, md, hash, sig)

参数

传入值类型 解释

string

公钥数据,仅支持PEM格式

int

签名模式, 例如 rsa.MD_SHA1 , rsa.MD_SHA256

string

hash数据, 如果是HEX字符串,记得fromHex转二进制数据

string

sig数据, 如果是HEX字符串,记得fromHex转二进制数据

返回值

返回值类型 解释

bool

有效返回true,否则为false,出错返回nil

四、程序demo讲解

4.1 rsa加密

读取文件public.pem中的公钥然后加密数据。

图片

4.2 rsa解密

读取privkey.pem文件中的私钥,然后采用rsa解密数据

图片

4.3 计算字符串的sha1值

 

图片

4.4 签名

读取privkey.pem中的私钥数据(仅支持PEM格式),采用rsa.MD_SHA1模式签名

 

图片

4.5 验签

读取public.pem文件中的公钥数据,采用rsa.MD_SHA1模式验签

 

图片

五、效果展示

5.1 下载固件和脚本

图片

5.2 效果展示

图片

今天就分享到这里了。