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

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

HarmonyOS
2024-03-18 21:59:30
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

将服务器下发的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); 
}

参考链接

使用RSA非对称密钥(PKCS1模式)加解密

分享
微博
QQ
微信
回复
2024-03-19 21:44:33
相关问题
如何使用RSA加密明文数据
496浏览 • 1回复 待解决
List上展示服务端下发HTML字符串
246浏览 • 1回复 待解决
HarmonyOS RSA私钥加密解密
24浏览 • 1回复 待解决
如何实现RSAPK加密一段文字
638浏览 • 1回复 待解决
HarmonyOS RSA解密
9浏览 • 1回复 待解决
HarmonyOS 服务端JSON字符串解析问题
590浏览 • 1回复 待解决
如何字符串进行MD5哈希处理
2690浏览 • 1回复 待解决
HarmonyOS RSA如何解密
666浏览 • 0回复 待解决
HarmonyOS 支持rsa使用解密吗
499浏览 • 1回复 待解决
HarmonyOS 加密导入RSA1024秘Demo
17浏览 • 1回复 待解决
关于加密字符串相关问题
231浏览 • 1回复 待解决
HarmonyOS 十六进制字符明文字符串
186浏览 • 1回复 待解决