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

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

阅读 621
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);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进