HarmonyOS PKCS8EncodedKeySpec这个java类在ArkTS中有替代类吗

代码如下:

/**
 * 私钥对象生成
 *
 * @param priKey
 * @return
 */
private static PrivateKey getPrivateKeyFromPKCS8(String priKey) {
  PKCS8EncodedKeySpec priPKCS8;
  PrivateKey privateKey = null;
  try {
    priPKCS8 = new PKCS8EncodedKeySpec(Base64.decode(priKey, Base64.NO_WRAP));
    KeyFactory keyf = KeyFactory.getInstance("RSA");
    privateKey = keyf.generatePrivate(priPKCS8);
  } catch (Exception e) {
    e.printStackTrace();
  }
  return privateKey;
}
HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

可以参考一下您可以参考如下demo:

import { cryptoFramework } from '@kit.CryptoArchitectureKit';
import { buffer, util } from '@kit.ArkTS';

@Entry
@Component
struct RSAExample {
  async signMessagePromise(content: cryptoFramework.DataBlob, priKey: cryptoFramework.PriKey) {
    let signAlg = "RSA1024|PKCS1|SHA1"; // 签名算法规格
    let signer = cryptoFramework.createSign(signAlg);
    await signer.init(priKey);
    let signData = await signer.sign(content);
    return signData;
  }

  async verifyMessagePromise(content: cryptoFramework.DataBlob, signMessageBlob: cryptoFramework.DataBlob, pubKey: cryptoFramework.PubKey) {
    let verifyAlg = "RSA1024|PKCS1|SHA1"; // 签名算法规格
    let verifier = cryptoFramework.createVerify(verifyAlg);
    await verifier.init(pubKey);
    let res = await verifier.verify(content, signMessageBlob);
    console.info("verify result is " + res);
    return res;
  }

  async convertAsyKey() {
    let rsaGenerator = cryptoFramework.createAsyKeyGenerator('RSA1024');
    // 随机生成的公私钥对,Base64格式
    let pubKeyVal = "xxxxx";
    let priKeyVal = "xxxxxx";

    let pkBlob: cryptoFramework.DataBlob = { data: this.stringToUnit8Array(pubKeyVal) };
    let prBlob: cryptoFramework.DataBlob = { data: this.stringToUnit8Array(priKeyVal) };

    rsaGenerator.convertKey(pkBlob, prBlob, async (err, keyPair) => {
      if (err) {
        console.error(`convertKey failed, ${err.code}, ${err.message}`);
        return;
      }
      console.info('convertKey success!');

      let plainText: string = "test";
      let res = await this.signMessagePromise({
        data: new Uint8Array(buffer.from(plainText, 'utf-8').buffer)
      }, keyPair.priKey)

      console.log("convertKey sign result:" + new util.Base64Helper().encodeToStringSync(res.data))

      let verifyResult = await this.verifyMessagePromise({
        data: new Uint8Array(buffer.from(plainText, 'utf-8').buffer)
      }, res, keyPair.pubKey);

      if (verifyResult == true) {
        console.info('convertKey verify success');
      } else {
        console.error('convertKey verify failed');
      }
    });
  }

  stringToUnit8Array(str: string): Uint8Array {
    return new util.Base64Helper().decodeSync(str)
  }

  build() {
    Button("获取信息").width(100).height(100)
      .onClick(() => {
        this.convertAsyKey()
      })
  }
}
分享
微博
QQ
微信
回复
2天前
相关问题
鸿蒙HAR可以打包Java
2034浏览 • 1回复 待解决
相机开发只支持 Java
2806浏览 • 1回复 待解决
Uint8Array是@Sendable
289浏览 • 1回复 待解决
HarmonyOS ArkTS支持TS的抽象
292浏览 • 1回复 待解决
harmonyOS 这个加载圈 java 自带这个
3299浏览 • 1回复 待解决
HarmonyOS ArkTS如何使用JSON
886浏览 • 1回复 待解决
HarmonyOS 有没有类似Java的Clss实现
16浏览 • 1回复 待解决
ArkTs 有运行时创建指定的方法
290浏览 • 1回复 待解决
HarmonyOS ArkTS是否支持使用匿名
557浏览 • 2回复 待解决
Native调用ArkTS函数
995浏览 • 1回复 待解决
ArkTS有没有读取ini的
275浏览 • 1回复 待解决
HarmonyOS有mimeType的工具
381浏览 • 1回复 待解决
java对象hashcode方法有替代api或者库
1011浏览 • 1回复 待解决