首页 > 编程语言 >HarmonyOS Next 非对称密钥生成实战:多算法与多方式详解

HarmonyOS Next 非对称密钥生成实战:多算法与多方式详解

时间:2024-11-18 08:48:36浏览次数:1  
标签:公钥 私钥 RSA Next HarmonyOS 密钥 格式 非对称

本文旨在深入探讨华为鸿蒙HarmonyOS Next系统(截止目前API12)的技术细节,基于实际开发实践进行总结。
主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。
本文为原创内容,任何形式的转载必须注明出处及原作者。

一、引言

在当今数字化时代,安全通信已然成为信息交互的基石。非对称密钥技术作为保障信息安全的关键手段,在安全通信领域中发挥着不可或缺的作用。与对称密钥不同,非对称密钥使用公钥和私钥这一对独特的“钥匙”,公钥可以公开,任何人都能使用它来加密信息,而私钥则被严格保密,只有拥有者才能使用它来解密信息。这种特性使得非对称密钥在身份认证、数据加密和数字签名等方面具有独特的优势,能够有效防止信息被窃取、篡改和伪造,为我们的数字生活提供了坚实的安全保障。接下来,我们将深入探讨 HarmonyOS Next 中如何生成非对称密钥对,以及不同算法和生成方式的特点与应用。

二、非对称密钥生成和转换规格

(二)指定规格方式差异与应用场景

  1. 字符串参数方式
       - 这种方式简单直观,通过特定的字符串格式来描述所需生成的密钥规格。例如,对于 RSA 算法,使用“RSA 密钥类型|素数个数”的格式,如“RSA1024|PRIMES_2”表示生成 RSA1024 类型、素数个数为 2 的密钥。对于其他算法,如 ECC 的“ECC 密钥长度”格式(如“ECC256”)、SM2 的“SM2_密钥长度”格式(如“SM2_256”)等。这种方式适用于快速创建常见规格的密钥,在开发过程中,如果开发者对密钥规格有明确的需求且符合预定义的字符串格式,使用字符串参数可以方便快捷地生成密钥。例如,在一个简单的加密通信示例中,开发者可以直接使用“RSA2048|PRIMES_2”来生成一个用于加密会话密钥的 RSA 密钥对。
  2. 密钥参数方式
       - 密钥参数方式则更加灵活和精确,它允许开发者通过详细的密钥参数来构建密钥。以 RSA 为例,需要指定模数(n)、公钥指数(pk)等参数;对于 ECC 算法,需要指定椭圆曲线的参数(如 p、a、b、g、n、h 等)以及公钥和私钥的值。这种方式适用于需要自定义密钥参数的高级场景,如在某些特定的安全协议实现中,根据协议要求精确构建符合标准的密钥。例如,在一个与特定安全标准兼容的应用中,开发者可能需要根据标准文档中定义的密钥参数,使用密钥参数指定方式来生成符合要求的 ECC 密钥对。

三、指定 PEM 格式字符串数据转换非对称密钥对(ArkTS 示例)

(一)转换要求

  1. 公钥需满足 X.509 规范、PKCS#1 规范、PEM 编码格式。这意味着公钥的格式必须符合 X.509 标准中定义的结构,并且使用 PKCS#1 标准进行编码,同时以 PEM 格式进行封装,以便于在不同系统之间进行传输和存储。
  2. 私钥需满足 PKCS#8 规范、PKCS#1 规范、PEM 编码格式。私钥同样需要遵循特定的规范和格式要求,以确保其安全性和兼容性。PKCS#8 规范定义了私钥的存储和加密格式,与 PKCS#1 规范相结合,保证了私钥在不同应用中的正确使用。

(二)代码实现细节

  1. 首先,准备好符合要求的 PEM 格式字符串数据,包括公钥和私钥字符串。例如:
let priKeyPkcs1Str1024: string = "-----BEGIN RSA PRIVATE KEY-----\nMIICXQIBAAKBgQCwIN3mr21+N96ToxnVnaS+xyK9cNRAHiHGgrbjHw6RAj3V+l+W\nY68IhIe3DudVlzE9oMjeOQwkMkq//HCxNlIlFR6O6pa0mrXSwPRE7YKG97CeKk2g\nYOS8YEh8toAvm7xKbiLkXuuMlxrjP2j/mb5iI/UASFSPZiQ/IyxDr0AQaQIDAQAB\nAoGAEvBFzBNa+7J4PXnRQlYEK/tvsd0bBZX33ceacMubHl6WVZbphltLq+fMTBPP\nLjXmtpC+aJ7Lvmyl+wTi/TsxE9vxW5JnbuRT48rnZ/Xwq0eozDeEeIBRrpsr7Rvr\n7ctrgzr4m4yMHq9aDgpxj8IR7oHkfwnmWr0wM3FuiVlj650CQQDineeNZ1hUTkj4\nD3O+iCi3mxEVEeJrpqrmSFolRMb+iozrIRKuJlgcOs+Gqi2fHfOTTL7LkpYe8SVg\ne3JxUdVLAkEAxvcZXk+byMFoetrnlcMR13VHUpoVeoV9qkv6CAWLlbMdgf7uKmgp\na1Yp3QPDNQQqkPvrqtfR19JWZ4uy1qREmwJALTU3BjyBoH/liqb6fh4HkWk75Som\nMzeSjFIOubSYxhq5tgZpBZjcpvUMhV7Zrw54kwASZ+YcUJvmyvKViAm9NQJBAKF7\nDyXSKrem8Ws0m1ybM7HQx5As6l3EVhePDmDQT1eyRbKp+xaD74nkJpnwYdB3jyyY\nqc7A1tj5J5NmeEFolR0CQQCn76Xp8HCjGgLHw9vg7YyIL28y/XyfFyaZAzzK+Yia\nakNwQ6NeGtXSsuGCcyyfpacHp9xy8qXQNKSkw03/5vDO\n-----END RSA PRIVATE KEY-----\n";
let publicPkcs1Str1024: string = "-----BEGIN RSA PUBLIC KEY-----\nMIGJAoGBALAg3eavbX433pOjGdWdpL7HIr1w1EAeIcaCtuMfDpECPdX6X5ZjrwiE\nh7cO51WXMT2gyN45DCQySr/8cLE2UiUVHo7qlrSatdLA9ETtgob3sJ4qTaBg5Lxg\nSHy2gC+bvEpuIuRe64yXGuM/aP+ZvmIj9QBIVI9mJD8jLEOvQBBpAgMBAAE=\n-----END RSA PUBLIC KEY-----\n";
  1. 然后,创建非对称密钥生成器并进行转换:
import { cryptoFramework } from '@kit.CryptoArchitectureKit';
async function TestPkcs1ToPkcs8ByPromise() {
  let asyKeyGenerator = cryptoFramework.createAsyKeyGenerator('RSA1024');
  let keyPair = await asyKeyGenerator.convertPemKey(publicPkcs1Str1024, priKeyPkcs1Str1024);
  let priPemKey = keyPair.priKey;
  let pubPemKey = keyPair.pubKey;
  let priString = priPemKey.getEncodedPem('PKCS8');
  let pubString = pubPemKey.getEncodedPem('X509');
  console.info("[promise]TestPkcs1ToPkcs8ByPromise priString output is " + priString);
  console.info("[promise]TestPkcs1ToPkcs8ByPromise pubString output is " + pubString);
}

- 这里首先创建了一个 RSA 密钥生成器,指定密钥类型为“RSA1024”。然后使用convertPemKey方法,传入公钥和私钥字符串数据,将其转换为非对称密钥对。转换成功后,可以获取转换后的密钥对中的公钥和私钥,并使用getEncodedPem方法将其转换为指定格式(如 PKCS8 格式的私钥和 X509 格式的公钥)的字符串,以便进行后续的操作或存储。

四、总结

在 HarmonyOS Next 中,非对称密钥生成涉及多种算法和生成方式。不同算法如 RSA、ECC、DSA、SM2、Ed25519、X25519 和 DH 各具特点,适用于不同场景。指定规格方式有字符串参数和密钥参数两种,我们开发者需根据实际需求选择。在转换非对称密钥对时,要遵循相应的转换要求和流程,如 PEM 格式字符串数据转换时需确保公钥和私钥满足特定规范。要点包括了解各种算法的特性、掌握不同指定规格方式的适用场景等。注意事项有注意算法的安全性和性能,如某些算法在特定场景下可能存在安全风险或性能瓶颈;同时,要确保密钥的妥善管理,防止密钥泄露导致安全问题。

标签:公钥,私钥,RSA,Next,HarmonyOS,密钥,格式,非对称
From: https://www.cnblogs.com/samex/p/18551608

相关文章

  • #HarmonyOS篇:状态管理
    状态管理概要状态变量:被状态装饰器装饰的变量,状态变量值的改变会引起UI的渲染更新。常规变量:没有被状态装饰器装饰的变量,通常应用于辅助计算。数据源/同步源:状态变量的原始来源,可以同步给不同的状态数据。命名参数机制:父组件通过指定参数传递给子组件的状态变量,为父子传......
  • #HarmonyOS篇: 主题图标库&资源分类与访问
    主题图标库https://developer.huawei.com/consumer/cn/design/harmonyos-symbol/资源分类与访问地址https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/resource-categories-and-access-V5base目录是默认存在的目录,二级子目录element用于存放字符串......
  • 鸿蒙Next模糊接口梳理
    foregroundBlurStyle和backgroundBlurStyleforegroundBlurStyle(value:BlurStyle,options?:ForegroundBlurStyleOptions)backgroundBlurStyle(value:BlurStyle,options?:BackgroundBlurStyleOptions)第一个参数都是模糊材质,用的是鸿蒙系统定制好的一套模糊参数,封装了模糊......
  • HarmonyOS:UIAbility组件间交互(设备内)
    UIAbility是系统调度的最小单元。在设备内的功能模块之间跳转时,会涉及到启动特定的UIAbility,包括应用内的其他UIAbility、或者其他应用的UIAbility(例如启动三方支付UIAbility)。一、启动应用内的UIAbility当一个应用内包含多个UIAbility时,存在应用内启动UIAbility的场景......
  • 使用 Docker 部署 Next Terminal 轻量级堡垒机
    1)NextTerminal 介绍官网:https://next-terminal.typesafe.cn/GitHub:https://github.com/dushixiang/next-terminal想必经常玩服务器的都了解过 堡垒机,类似于跳板机,但与跳板机的侧重点不同。堡垒机的主要功能是控制和监控对内部网络的远程访问。它提供严格的访问控制、会话审......
  • HarmonyOS Next 网络加速进阶:优化策略与应用实践
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。一、引言在上一篇博客中,我们已经初步......
  • HarmonyOS Next 网络加速入门:基础功能全解析
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。一、引言在当今数字化时代,网络已经成......
  • HarmonyOS Next 网络加速实战:社交应用网络优化全攻略
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。一、引言在当今数字化时代,社交应用已......
  • HarmonyOS Next 网络加速实战:打造极致网络体验
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。一、引言在移动应用的世界里,网络体验......
  • HarmonyOS Next 助力在线教育:网络优化实战案例
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。一、引言在线教育在当今社会中发挥着......