如何使用服务端下发的RSA公钥(字符串)对明文数据进行加密

将服务器下发的RSA公钥字符串替换掉pubKeyStr即可实现,具体可参考如下代码:

import { buffer, util } from '@kit.ArkTS';
import { cryptoFramework } from '@kit.CryptoArchitectureKit';
/**
* 使用RSA非对称密钥(PKCS1模式)加密
* @param message 要加密的明文数据
* @returns 加密后的字符串,base64编码
*/
export async function encryptRSA(message: string) {
// 服务器下发RSA公钥字符串(base64编码)
let pubKeyStr = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFQArGDm5BXM4jHHuZGIb/kUoqrSjXkjqPLgrDmqBFxNyYsyxvyFRO10nStQwdRkQkh5lZ5sqC1G/z6lyDPpEySTBo9S5GLZ2Tj4yinNjcMXmOwiHfyQAQo9LwdlyTedwRchg0fYewWBVTVhGcWPowT1aA+GnQhYwNmaS/iKQsNQIDAQAB";
// 初始化Base64工具实例
let base64Helper = new util.Base64Helper();
// 公钥转换为Uint8Array,然后包装为DataBlob类型
let pubKeyBlob: cryptoFramework.DataBlob = { data: base64Helper.decodeSync(pubKeyStr) };
// 创建RSA key生成器
let rsaGenerator = cryptoFramework.createAsyKeyGenerator('RSA1024');
// 将公钥包装数据pubKeyBlob转换成密钥对类型KeyPair
let keyPair = await rsaGenerator.convertKey(pubKeyBlob, null);
// 创建 Cipher对象
let cipher = cryptoFramework.createCipher('RSA1024|PKCS1');
// 初始化加密模式,指定密钥keyPair.pubKey
await cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, keyPair.pubKey, null);
// 包装要加密的明文
let plainTextBlob: cryptoFramework.DataBlob = { data: new Uint8Array(buffer.from(message, 'utf-8').buffer) };
// 传入明文,获取加密后的数据
let encryptBlob = await cipher.doFinal(plainTextBlob);
// 返回加密后的字符串
return base64Helper.encodeToStringSync(encryptBlob.data);
}

参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-crypto-architecture-kit-V5#section1340915293719

HarmonyOS Next 鸿蒙开发-如何使用服务端下发的RSA公钥(字符串)对明文数据进行加密的更多相关文章

  1. ubuntu下安装 gSOAP 用于C/C++开发web service服务端与客户端

    昨天在ubuntu下进行安装gSOAP,费了很多时间,没成功,今天又来找了大量教程资料,终于一次成功,这里写下自己的安装步骤和方法,供大家参考. 首先下载gsoap,我下载的是gsoap-2.8.1. ...

  2. 转: 基于netty+ protobuf +spring + hibernate + jgroups开发的游戏服务端

    from: http://ybak.iteye.com/blog/1853335 基于netty+ protobuf +spring + hibernate + jgroups开发的游戏服务端 游戏服 ...

  3. 适合新手:从零开发一个IM服务端(基于Netty,有完整源码)

    本文由“yuanrw”分享,博客:juejin.im/user/5cefab8451882510eb758606,收录时内容有改动和修订. 0.引言 站长提示:本文适合IM新手阅读,但最好有一定的网络 ...

  4. 网络编程之TCP客户端开发和TCP服务端开发

    开发 TCP 客户端程序开发步骤 创建客户端套接字对象 和服务端套接字建立连接 发送数据 接收数据 关闭客户端套接字 import socket if __name__ == '__main__': ...

  5. 【FAQ】接入HMS Core推送服务,服务端下发消息常见错误码原因分析及解决方法

    HMS Core推送服务支持开发者使用HTTPS协议接入Push服务端,可以从服务器发送下行消息给终端设备.这篇文章汇总了服务端下发消息最常见的6个错误码,并提供了原因分析和解决方法,有遇到类似问题的 ...

  6. 支付宝移动支付开发详细教程服务端采用.net mvc webapi(C#)

    转自:http://www.kwstu.com/ArticleView/netmvc_201511132005431321 最近开发手机app需要实现移动支付功能,由于考虑支付安全将支付宝生成签名写到 ...

  7. 微信移动支付V3开发详细教程服务端采用.net mvc webapi(C#)

    转自:http://www.kwstu.com/ArticleView/netmvc_201511132050268716 最近开发手机app需要实现移动支付功能,由于考虑支付安全将微信支付生成签名写 ...

  8. 二、网络编程-socket之TCP协议开发客户端和服务端通信

    知识点:之前讲的udp协议传输数据是不安全的,不可靠不稳定的,tcp协议传输数据安全可靠,因为它们的通讯机制是不一样的.udp是用户数据报传输,也就是直接丢一个数据包给另外一个程序,就好比寄信给别人, ...

  9. Linux下用gSOAP开发Web Service服务端和客户端程序

    网上本有一篇流传甚广的C版本的,我参考来实现,发现有不少问题,现在根据自己的开发经验将其修改,使用无误:另外,补充同样功能的C++版本,我想这个应该更有用,因为能用C++,当然好过受限于C. 1.gS ...

  10. Linux下用gSOAP开发Web Service服务端和客户端程序(一)

    1.功能说明: 要开发的Web Service功能非常简单,就是一个add函数,将两个参数相加,返回其和. 2.C版本的程序: (1)头文件:SmsWBS.h,注释部分不可少,url部分的IP必须填写 ...

随机推荐

  1. Qt开源作品7-高亮按钮控件

    一.前言 这个高亮按钮控件并非本人原创作品,是参考的Qt界的一个大师级人物公孙二狗的作品,各位有兴趣可以去搜索查看,在原作者的代码上,我只是改成了自己的控件的框架结构,然后完善了一些细节,比如增加了各 ...

  2. ubuntu18.04安装g2o

    先对g2o的依赖库进行安装: sudo apt-get update sudo apt-get install libeigen3-dev sudo apt-get install libsuites ...

  3. Web网页端IM产品RainbowChat-Web的v5.0版已发布

    一.关于RainbowChat-Web RainbowChat-Web是一套Web网页端IM系统,是RainbowChat的姊妹系统(RainbowChat是一套基于开源IM聊天框架 MobileIM ...

  4. IM通讯协议专题学习(九):手把手教你如何在iOS上从零使用Protobuf

    本文作者:丁同舟,来自金蝶随手记技术团队. 1.引言 接上篇<金蝶随手记团队的Protobuf应用实践(原理篇)>,本文将以iOS端的Objective-C代码为例,图文并茂地向您菔救绾卧 ...

  5. WPF使用Microsoft.Toolkit.Mvvm作为Mvvm框架DryIoc作依赖注入

    背景 MVVMLight已多年未更新,Microsoft.Toolkit.Mvvm作为MVVMLight继任者,需要学习一下. Microsoft.Toolkit.Mvvm跟MVVMLight使用非常 ...

  6. Note -「M. Analysis 24 Aut. Prev.」“重聚是你我共同的回答”

    \[\textit{Litar!} \newcommand{\opn}[1]{\operatorname{#1}} \newcommand{\card}[0]{\opn{card}} \newcomm ...

  7. ForkJoin全解2:forkjoin实际工作流程与实现

    1.相关概念解释 1.1 "内部"和外部 当一个操作是在非ForkjoinThread的线程中进行的,则称该操作为外部操作.比如我们前面执行pool.invoke,invoke内又 ...

  8. 【原创】thinkbook16+2023锐龙7840h版本笔记本C口充电需要重新插拔才起作用的问题自己利用延时继电器解决,笔记本两次插拔才能充电

    这个笔记本左边有两个c口都可以充电有一个是usb4,pd100w. 现在出现一个问题需要插两次才能申请到pd协议.看了主板,也没有办法直接给他dc20v的电压输入.怀念以前的笔记本都是dc供电,简单耐 ...

  9. idea+maven打包.jar发布项目

    开发完项目后,idea+maven环境打包成.jar包,才能发布项目.下面记录常用的几种打包方式. 一,通过mvn命令打包 比较专业的用法是通过mvn命令打包: mvn clean package - ...

  10. bat脚本(批处理程序)调用WinRAR及7zip压缩和解压缩

    最近项目要用到定期批量将文件及文件夹下的文档打包,所以想到要写脚本来实现,然后做Windows定期任务调用.bat脚本(批处理程序)调用WinRAR及7zip压缩和解压缩. 调用WinRAR来实现 因 ...