LuatOS-SOC接口文档(air780E)--rsa - RSA加密解密

示例

-- 请在电脑上生成私钥和公钥, 当前最高支持4096bit, 一般来说2048bit就够用了
-- openssl genrsa -out privkey.pem 2048
-- openssl rsa -in privkey.pem -pubout -out public.pem
-- privkey.pem 是私钥, public.pem 是公钥
-- 私钥用于 加密 和 签名, 通常保密, 放在服务器端
-- 公钥用于 解密 和 验签, 一般可公开,放在设备端-- 为了演示API使用, 这里把私钥也放在设备上local res = rsa.encrypt((io.readFile("/luadb/public.pem")), "abc")
-- 打印结果
log.info("rsa", "encrypt", res and #res or 0, res and res:toHex() or "")-- 下面是解密, 通常不会在设备端进行, 这里主要是演示用法, 会很慢
if res then-- 读取私钥, 然后解码数据local dst = rsa.decrypt((io.readFile("/luadb/privkey.pem")), res, "")log.info("rsa", "decrypt", dst and #dst or 0, dst and dst:toHex() or "")
end-- 演示签名和验签
local hash = crypto.sha1("1234567890"):fromHex()
-- 签名通常很慢, 通常是服务器做
local sig = rsa.sign((io.readFile("/luadb/privkey.pem")), rsa.MD_SHA1, hash, "")
log.info("rsa", "sign", sig and #sig or 0, sig and sig:toHex() or "")
if sig then-- 验签是很快的local ret = rsa.verify((io.readFile("/luadb/public.pem")), rsa.MD_SHA1, hash, sig)log.info("rsa", "verify", ret)
end

rsa.encrypt(key, data)

RSA加密

参数

传入值类型

解释

string

公钥数据,仅支持PEM格式

string

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

返回值

返回值类型

解释

string

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

例子

-- 下面代码中的 "abc" 是待加密数据
local res = rsa.encrypt((io.readFile("/luadb/public.pem")), "abc")
-- 打印结果
log.info("rsa", "encrypt", res and #res or 0, res and res:toHex() or "")

rsa.decrypt(key, data, pwd)

RSA解密

参数

传入值类型

解释

string

私钥数据,仅支持PEM格式

string

待解密数据

string

私钥的密码,可选

返回值

返回值类型

解释

string

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

例子

-- 注意, 解密通常很慢, 建议在服务器端进行
-- res 是待解密的数据
local dst = rsa.decrypt((io.readFile("/luadb/privkey.pem")), res, "")
log.info("rsa", "decrypt", dst and #dst or 0, dst and dst:toHex() or "")

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

RSA验签

参数

传入值类型

解释

string

公钥数据,仅支持PEM格式

int

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

string

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

string

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

返回值

返回值类型

解释

bool

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

例子

local ret = rsa.verify((io.readFile("/luadb/public.pem")), rsa.MD_SHA1, hash, sig)
log.info("rsa", "verify", ret)

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

RSA签名

参数

传入值类型

解释

string

私钥数据,仅支持PEM格式

int

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

string

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

string

私钥密码, 可选

返回值

返回值类型

解释

string

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

例子

local sig = rsa.sign((io.readFile("/luadb/privkey.pem")), rsa.MD_SHA1, hash, "")
log.info("rsa", "sign", sig and #sig or 0, sig and sig:toHex() or "")

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

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

相关文章

acwing算法基础之动态规划--背包问题

目录 1 基础知识2 模板3 工程化 1 基础知识 (零) 背包问题描述:有 N N N个物品,每个物品的体积是 v i v_i vi​,价值是 w i w_i wi​,现有容量是 V V V的背包,求这个背包能装下的物品的最大价值…

C#中的警告CS0120、CS0176、CS0183、CS0618、CS0649、CS8600、CS8601、CS8602、CS8604、CS8625及处理

目录 一、CS0120 二、CS0176 1.解决前 2.解决后 3.解决办法 三、CS0183 四、CS0618 五、CS8600 六、CS8602 七、CS8622 1. 解决前: 2. 解决后: 3.解决方法: 八、CS8604和CS8625 九、CS0649 十、CS8601 一、CS0120 严重性 代…

【算法萌新闯力扣】:回文链表

力扣题目:回文链表 开篇 今天是备战蓝桥杯的第23天。我加入的编程导航算法通关村也在今天开营啦!那从现在起,我的算法题更新会按照算法村的给的路线更新,更加系统。大家也可以关注我新开的专栏“算法通关村”。里面会有更全面的知…

pandas教程:Techniques for Method Chaining 方法链接的技巧

文章目录 12.3 Techniques for Method Chaining(方法链接的技巧)1 The pipe Method(pipe方法) 12.3 Techniques for Method Chaining(方法链接的技巧) 对序列进行转换的时候,我们会发现会创建很…

操作系统的中断与异常(408常考点)

为了进行核心态和用户态两种状态的切换,引入了中断机制。 中断是计算机系统中的一种事件,它会打断CPU当前正在执行的程序,转而执行另一个程序或者执行特定的处理程序。中断可以来自外部设备(如键盘、鼠标、网络等)、软…

1072 Gas Station (最短路径同时求最短路,最长路,总路径)

题意:给定几处居民住所与几处预选加油站点,求离最近的居民住所最远且所有居民都在该站点服务区内的加油站点,如果有多个,则选择平均距离最小的,再有多个,选择序号最小的。 思路:刚开始不知道未…

振南技术干货集:FFT 你知道?那数字相敏检波 DPSD 呢?(1)

注解目录 1 、DPSD 的基础知识 1.1 应用模型 1.2 原理推导 1.3 硬件 PSD (相敏检波,就是从繁乱复杂的信号中将我们关心的信号检出来,同时对相位敏感。 数学原理,逃不掉的,硬着头皮看吧。) 2 、DPSD …

【电路笔记】-电阻器颜色代码与阻值计算

电阻器颜色代码与阻值计算 文章目录 电阻器颜色代码与阻值计算1、概述2、计算电阻器颜色代码值3、贴片电阻器 电阻器颜色编码使用色带轻松识别电阻器的电阻值及其百分比容差。 1、概述 由于有许多不同类型的电阻器可用,我们需要形成电阻器颜色代码系统以便能够识别…

LuatOS-SOC接口文档(air780E)--repl - “读取-求值-输出” 循环

示例 --[[ 本功能支持的模块及对应的端口 模块/芯片 端口 波特率及其他参数 Air101/Air103 UART0 921600 8 None 1 Air105 UART0 1500000 8 None 1 ESP32C3 UART0 921600 8 None 1 -- 注意, 简约版(无CH343)不支持 ESP32C2 …

Java 注解在 Android 中的使用场景

Java 元注解有 5 种,常用的是 Target 和 Retention 两个。 其中 Retention 表示保留级别,有三种: RetentionPolicy.SOURCE - 标记的注解仅保留在源码级别中,并被编译器忽略RetentionPolicy.CLASS - 标记的注解在编译时由编译器保…

力扣104. 二叉树的最大深度

目录 1.解题思路2.代码实现 1.解题思路 如果我们知道了左子树和右子树的最大深度,那么该二叉树的最大深度即为大的深度加一,而左子树和右子树的最大深度又可以以同样的方式进行计算。因此我们可以用「深度优先搜索」的方法来计算二叉树的最大深度。具体而言&#x…

Vue框架学习笔记——事件scroll和wheel的区别

文章目录 前文提要滚动条滚动事件 scroll鼠标滚动事件 wheel二者不同点 前文提要 本人仅做个人学习记录,如有错误,请多包涵 滚动条滚动事件 scroll scroll事件绑定html页面中的指定滚动条,无论你拖拽滚动条,选中滚动条之后按键盘…

Doris的PROPERTIES与ENGINE(九)

接上篇----------Doris分区与分桶 在建表语句的最后 PROPERTIES 中,可以指定以下两个参数: replication_num 每个 Tablet 的副本数量。默认为 3,建议保持默认即可。在建表语句中,所有 Partition 中的 Tablet 副本数量统一指定。…

【论文阅读】TACAN:控制器局域网中通过隐蔽通道的发送器认证

文章目录 摘要一、引言二、相关工作三、系统和对手模型3.1 系统模型对手模型 四、TACAN4.1 TACAN 架构4.2 发送方认证协议4.3 基于IAT的隐蔽通道4.4 基于偏移的隐蔽通道(本节公式格式暂未整理)4.5 基于LSB的隐蔽通道 摘要 如今,汽车系统与现…

一个GPU版本的遗传算法迭代xgboost最优参数的示例,这里用的是自定义损失函数

一个简单的遗传算法迭代xgboost最优参数的示例,这里用的是自定义损失函数 import pandas as pd import numpy as np import xgboost as xgb from sko.GA import GA from sklearn.model_selection import train_test_split from sklearn.linear_model import Logisti…

vscode Markdown 预览样式美化多方案推荐

优雅的使用 vscode写 Markdown,预览样式美化 1 介绍 我已经习惯使用 vscode 写 markdown。不是很喜欢他的 markdown 样式,尤其是代码块高亮的样式。当然用 vscode 大家基本上都会选择安装一个Markdown-preview-enhanced的插件,这个插件的确…

SpringBoot定时任务报错Unexpected error occurred in scheduled task原因及其解决方法(亲测有效)

问题 spring boot项目在线上一直正常运行没有错误,然后今天发生了报错,如图 这是一个定时器错误,发生这个报错 主要有两个原因 定时器编写的有错误Scheduled注解方式级别高于资源注入级别,导致了资源注入失败 以下是我的代码 …

单片机学习4——中断的概念

中断的概念: CPU在处理A事件的时候,发生了B事件,请求CPU迅速去处理。(中断产生) CPU暂时中断当前的工作,转去处理B事件。(中断响应和中断服务) 待CPU将B事件处理完毕后&#xff0…

【物联网开发】、【小程序蓝牙通讯数据校验】JS CRC-16-MODBUS 验证 高位在前地位在后;JS异或校验;16进制字符串和float互转

1.CRC校验 /*计算CRC-16/MODBUS校验位高低位*/ function calculateCRC16Modbus(dataHexString) {const dataBytes [];for (let i 0; i < dataHexString.length; i 2) {dataBytes.push(parseInt(dataHexString.substr(i, 2), 16));}let crc 0xFFFF;const polynomial 0x…

【数据结构初阶(5)】链式队列的基本操作实现

文章目录 队列的定义初始化队列队尾入队列队头出队列取队头元素取队尾元素获取队列有效元素个数判断队空销毁队列 因为队列比较简单&#xff0c;关于队列的概念就不过多赘述了&#xff0c;本文只讲链队的基本操作实现 队列的定义 定义队列结点结构 链队中的每个结点都应该包…