【问题】如何用系统库 @ohos.security.cryptoFramework 实现RSA加密?

【环境】系统:HarmonyOS Next Beta ,SDK:API12

【解决方法】

 /*
   * RSA加密
   * @param content:待加密内容
   * @param key: 公钥字符串
   * */
  async  RSAEncryptToString(content : string, key : string) : Promise<string> {
    
    let base64Helper = new util.Base64Helper();
    
    let pubKeyBlob: cryptoFramework.DataBlob = { data: base64Helper.decodeSync(key) };

    // 将公钥包装数据pubKeyBlob转换成密钥对类型KeyPair
    let rsaGenerators = cryptoFramework.createAsyKeyGenerator("RSA512|PRIMES_2");
    let keyPair = await rsaGenerators.convertKey(pubKeyBlob, null);

    // 创建 Cipher对象
    let cipher = cryptoFramework.createCipher("RSA512|PKCS1");

    // 初始化加密模式,指定密钥keyPair.pubKey
    await cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, keyPair.pubKey, null);

    // 包装要加密的明文
    let plainTextBlob: cryptoFramework.DataBlob = { data: new Uint8Array(buffer.from(content, 'utf-8').buffer) };

    // 传入明文,获取加密后的数据
    let encryptBlob = await cipher.doFinal(plainTextBlob);
    // 返回加密后的字符串
    return base64Helper.encodeToStringSync(encryptBlob.data);
    
  }

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐