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