利用crypto.subtle.generateKey()写公钥和私钥,并用exportKey将公私钥导出

embedded/2024/10/18 8:36:37/

crypto.subtle.generateKey 需要在支持 Web Crypto API 的环境中运行,比如现代浏览器,或在nodejs环境当中
密钥生成和导出操作是异步的,因此需要使用 async/await 或者 .then() 和 .catch() 来处理。
generateKey 函数的第三个参数是一个数组,指定了密钥对的使用方式,这里我们指定了 “encrypt” 和 “decrypt”。
exportKey 函数的第一个参数决定了密钥的导出格式,“spki” 用于公钥,“pkcs8” 用于私钥。
出于安全考虑,密钥材料不应该以明文形式打印或存储。示例中的 console.log 只是为了演示目的。

javascript">const keyGenParams={name:'RSA-OAEP',//算法名称modulusLength:2048,//密钥长度publicExponent:new Uint8Array([1,0,1]),//公钥的指数65537最大值hash:{name:"SHA-256"}//使用SHA-256算法};async function generateAndExportKeyPair(){try{//利用generateKey()生成一个公私密钥const keyPair=await crypto.subtle.generateKey(keyGenParams,true,["encrypt","decrypt"]);//“spki” 表示导出公钥 const exportedPublicKey=await crypto.subtle.exportKey("spki",keyPair.publicKey);//window.btoa是浏览器方法用于创建一个 base-64 编码的字符串。const publicKeyPem=window.btoa(String.fromCharCode(...new Uint8Array(exportedPublicKey)));//pkcs8是表示导出私钥const exportedPrivateKey=await crypto.subtle.exportKey("pkcs8",keyPair.privateKey);const privateKeyPem=window.btoa(String.fromCharCode(...new Uint8Array(exportedPrivateKey)));console.log("私钥:",privateKeyPem);console.log("公钥:",publicKeyPem);}catch(error){console.error("error generating or exporting keys:",error);}}generateAndExportKeyPair();

http://www.ppmy.cn/embedded/85642.html

相关文章

免费神器!国产AI绘画工具,速来体验!

今天介绍一个最近发现的免费绘画平台,支持训练模型,和libilibi有点像,目前网站功能都是免费的。 可以选择各种风格类型,看到好看的图也可以直接做同款。 页面相对简洁,图片比例支持自定义,最高一次可以出8张…

GD 32 流水灯

前言: 通过后面的学习掌握了一些逻辑架构的知识,通过复习的方式将学到的裸机任务架构的知识运用起来,同时巩固前面学到的知识,GPIO的配置等。 开发板上LED引脚使用示意图 注:此次LED灯的点亮凡是是高电平点亮&#xff…

Android 线程池的面试题 线程线程池面试题

1.为什么要用线程池 降低资源消耗:通过复用线程,降低创建和销毁线程的损耗。 提高响应速度:任务不需要等待线程创建就能立即执行。 提高线程的可管理性:使用线程池可以进行统一的分配、调优和监控。 2. 线程池执行流程&#xff08…

C++20之设计模式(22):策略模式

策略模式 策略模式动态策略静态策略总结 策略模式 假设您决定使用包含多个字符串的数组或向量,并将它们作为列表输出 ["just", "like", "this"]。 如果考虑不同的输出格式,您可能知道需要获取每个元素,并将其…

DVWA中命令执行漏洞细说

在攻击中,命令注入是比较常见的方式,今天我们细说在软件开发中如何避免命令执行漏洞 我们通过DVWA中不同的安全等级来细说命令执行漏洞 1、先调整DVWA的安全等级为Lower,调整等级在DVWA Security页面调整 2、在Command Injection页面输入127.0.0.1&…

Android中systrace配置及注意问题

Android中systrace配置及注意问题 systrace配置的官方文档地址如下:优化启动时间 Systrace systrace 允许在启动期间收集内核和 Android 跟踪记录。systrace 的可视化可以帮助分析启动过程中的具体问题。(不过,如果要查看整个启动过程中的平…

RabbitMQ入门详解

前言 本篇文章将详细介绍rabbitmq的基本概念知识,以及rabbitmq各个工作模式在springboot中如何使用。 文章目录 介绍 简介 RabbitMQ 核心 生产者与消费者 Exchange Queue 工作模式 简单模式 工作队列模式 发布订阅模式 路由模式 主题模式 SpringBoot中…

.net core 外观者设计模式 实现,多种支付选择

1&#xff0c;接口 /// <summary>/// Web页面支付/// </summary>public interface IWebPagePay{public WebPagePayResult CreatePay(string productName, string orderSn, string totalPrice);}2&#xff0c;实现接口 实现阿里支付 public class AliPagePay : IWe…