如何使用RSA公钥加密明文数据

如何使用RSA公钥加密明文数据

HarmonyOS
2024-07-26 09:44:56
964浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
QW_MA

为了实现该操作,您需将当前系统中已有的`pubKeyStr`变量值更新为服务器下发的RSA公钥字符串。

import { buffer, util } from '@kit.ArkTS';
import { cryptoFramework } from '@kit.CryptoArchitectureKit';
/**
  • 1.
  • 2.
  • 3.

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

要加密的明文数据

加密后的字符串,base64编码

*/
export async function encryptRSA(message: string) {
  • 1.
  • 2.

服务器下发RSA公钥字符串(base64编码)

let pubKeyStr = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFQArGDm5BXM4jHHuZGIb/kUoqrSjXkjqPLgrDmqBFxNyYsyxvyFRO10nStQwdRkQkh5lZ5sqC1G/z6lyDPpEySTBo9S5GLZ2Tj4yinNjcMXmOwiHfyQAQo9LwdlyTedwRchg0fYewWBVTVhGcWPowT1aA+GnQhYwNmaS/iKQsNQIDAQAB";
  • 1.

初始化Base64工具实例

let base64Helper = new util.Base64Helper();
  • 1.

公钥转换为Uint8Array,然后包装为DataBlob类型

let pubKeyBlob: cryptoFramework.DataBlob = { data: base64Helper.decodeSync(pubKeyStr) };
  • 1.

创建RSA key生成器

let rsaGenerator = cryptoFramework.createAsyKeyGenerator('RSA1024');
  • 1.

将公钥包装数据pubKeyBlob转换成密钥对类型KeyPair

let keyPair = await rsaGenerator.convertKey(pubKeyBlob, null);
  • 1.

创建 Cipher对象

let cipher = cryptoFramework.createCipher('RSA1024|PKCS1');
  • 1.

初始化加密模式,指定密钥keyPair.pubKey

await cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, keyPair.pubKey, null);
  • 1.

包装要加密的明文

let plainTextBlob: cryptoFramework.DataBlob = { data: new Uint8Array(buffer.from(message, 'utf-8').buffer) };
  • 1.

传入明文,获取加密后的数据

let encryptBlob = await cipher.doFinal(plainTextBlob);
  • 1.

返回加密后的字符串

return base64Helper.encodeToStringSync(encryptBlob.data);
}
  • 1.
  • 2.
分享
微博
QQ
微信
回复
2024-07-26 21:28:14


相关问题
HarmonyOS RSA私钥加密解密
1049浏览 • 1回复 待解决
如何实现RSAPK加密一段文字
1279浏览 • 1回复 待解决
HarmonyOS RSA解密
983浏览 • 1回复 待解决
HarmonyOS 支持rsa使用解密吗
1234浏览 • 1回复 待解决
HarmonyOS RSA如何解密
1630浏览 • 0回复 待解决
HarmonyOS中RSA如何解密?
777浏览 • 0回复 待解决
HarmonyOS 关于RSA加解密问题
1004浏览 • 1回复 待解决
rsa 解密初始化报错
1228浏览 • 1回复 待解决
HarmonyOS 私钥加密解密问题
875浏览 • 1回复 待解决
HarmonyOS RSA加密的base64秘转换
1160浏览 • 1回复 待解决
HarmonyOS 加密导入RSA1024秘对Demo
802浏览 • 1回复 待解决
HarmonyOS 证书问题
832浏览 • 1回复 待解决