HarmonyOS 鸿蒙Next能否提供一个demo,包括获取当前应用版本号(versionName)和RSA签名(指定私钥签名,只需要生成签名不需要验签的那种)

发布于 1周前 作者 yibo5220 来自 鸿蒙OS

HarmonyOS 鸿蒙Next能否提供一个demo,包括获取当前应用版本号(versionName)和RSA签名(指定私钥签名,只需要生成签名不需要验签的那种) 能否提供一个demo,包括获取当前应用版本号(versionName)和RSA签名(指定私钥签名,只需要生成签名不需要验签的那种)

2 回复

参考下面的demo去获取当前应用的版本号和RSA签名信息:

import bundleManager from '@ohos.bundle.bundleManager';
import { BusinessError } from '@ohos.base';
import hilog from '@ohos.hilog';

@Entry
@Component
struct BoundleInfoDemo {
  @State message: string = 'Hello World';
  aboutToAppear(): void {
    let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_SIGNATURE_INFO
    try {
      bundleManager.getBundleInfoForSelf(bundleFlags).then(data => {
        hilog.info(0x0000, 'testTag', 'getBundleInfoForSelf successfully. Data: %{public}s', JSON.stringify(data));
      }).catch(err => {
        hilog.error(0x0000, 'testTag', 'getBundleInfoForSelf failed. Cause: %{public}s', err.message);
      });
    } catch (err) {
      let message = (err as BusinessError).message;
      hilog.error(0x0000, 'testTag', 'getBundleInfoForSelf failed: %{public}s', message);
    }
  }
  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .width('100%')
    }
    .height('100%')
  }
}

参考文档链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-bundlemanager-bundleinfo-V5

/******/

//导入RSA密钥
function rsaKeyBase64(puk: string, prk: string) {
const base = new util.Base64Helper();
// 创建一个AsyKeyGenerator实例
let rsaGenerator = cryptoFramework.createAsyKeyGenerator('RSA2048');
puk = ""
if (puk != '' && prk != '') {
let keyPair = rsaGenerator.convertKeySync({ data: base.decodeSync(puk) }, { data: base.decodeSync(prk) });
return keyPair;
} else if (prk) {
let keyPair = rsaGenerator.convertKeySync(null, { data: base.decodeSync(prk) });
return keyPair;
} else if (prk) {
let keyPair = rsaGenerator.convertKeySync({ data: base.decodeSync(puk) }, null);
return keyPair;
} else {
let keyPair = rsaGenerator.generateKeyPairSync();
return keyPair;
}
}

更多关于HarmonyOS 鸿蒙Next能否提供一个demo,包括获取当前应用版本号(versionName)和RSA签名(指定私钥签名,只需要生成签名不需要验签的那种)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙Next 获取当前应用版本号(versionName)和生成 RSA 签名的 Demo 代码如下:

// 注意:此代码段为示意性内容,非直接可运行Java代码,且贴合鸿蒙开发要求

// 获取当前应用版本号(versionName)
import ohos.bundle.IBundleManager;

String getVersionName() {
    IBundleManager bundleManager = getBundleManager();
    if (bundleManager != null) {
        String packageName = getPackageName(); // 获取当前应用的包名
        try {
            ohos.bundle.BundleInfo bundleInfo = bundleManager.getBundleInfo(packageName, 0);
            return bundleInfo.getVersionName();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    return null;
}

// 生成 RSA 签名(指定私钥签名)
import ohos.security.crypto.KeyFactory;
import ohos.security.crypto.PrivateKey;
import ohos.security.crypto.Signature;

byte[] generateSignature(String data, PrivateKey privateKey) throws Exception {
    Signature signature = Signature.getInstance("SHA256withRSA");
    signature.initSign(privateKey);
    signature.update(data.getBytes());
    return signature.sign();
}

// 调用示例
// String versionName = getVersionName();
// PrivateKey privateKey = ... // 从密钥库获取或生成
// byte[] signature = generateSignature("data to sign", privateKey);

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部