HarmonyOS 如何针对服务端下发的RSA公钥字符串进行转换,生成加密所需的密钥对(keyPair)?

服务端下发RSA公钥(字符串),前端需要对明文数据进行加密,如何对这个公钥进行转换?

阅读 623
1 个回答

参考如下(传入公钥导入然后加密):

let base = new util.Base64Helper();
let pubKey = "MIIBIjANBgkqhkiS9w0EAQFFAAOCAQ8AMIIBCgKCAQEAlj8tCgrUgbdEHNs7poNVQQbmWtlL74scoz0pEuV57WqLSh7l3r9+8fqslOmE2KKlDJFngIHYenH9+YoD1PdAXSovmKLrAqRGFJXabeoP8piCwbvCIL8XqSCAYq7r9QCW7KL6TIq0FUcAZJa4uM5eQl9+z/74NqcqimsMAFbM17NWQJ+wjHt73/aPr/zpQ2asfZacIzg4JyVNbO7+c7irl6OjUmpyCeXZLyrwMZsdlncPOFdWMyHTklNxOgP7sKgJEe+JRffKGIzbD5zIWhU7GwhfD0QvQ6Q4Px2eHy13lJ1PDbUpMstJt0uSFUQ8K4tE7FkNQxfYVjRLu4Hbyy39qQIDAQAB";
let asyKeyGenerator = cryptoFramework.createAsyKeyGenerator("RSA1024");
let cipher = cryptoFramework.createCipher("RSA1024|PKCS1"); //创建一个 Cipher (解密)对象
//引入外部的公钥加密
let publicKeyDataBlob:cryptoFramework.DataBlob = { data: base.decodeSync(pubKey) };
let keyGenPromise: cryptoFramework.KeyPair = await asyKeyGenerator.convertKey(publicKeyDataBlob, null);
await cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, keyGenPromise.pubKey, null);
let put: cryptoFramework.DataBlob = { data: stringToUint8Array("加密内容sadad") };
const finalRes = await cipher.doFinal(put)
let result = base.encodeToStringSync(finalRes.data);