如何获取应用指纹 HarmonyOS 鸿蒙Next
如何获取应用指纹 HarmonyOS 鸿蒙Next 看到Napi的接口OH_NativeBundle_GetCurrentApplicationInfo,可以获取应用指纹,这个有arkts的接口吗?
如果有arkts的接口,我可以直接调用,避免再去写napi
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/native-bundle-guidelines-V5
更多关于如何获取应用指纹 HarmonyOS 鸿蒙Next的实战教程也可以访问 https://www.itying.com/category-93-b0.html
如下
let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_SIGNATURE_INFO;
try {
bundleManager.getBundleInfoForSelf(bundleFlags, (err, data) => {
if (err) {
hilog.error(0x0000, 'Application', 'getBundleInfoForSelf failed: %{public}s', err.message);
} else {
let bundleInfo: bundleManager.BundleInfo = data as bundleManager.BundleInfo;
let signatureInfo:bundleManager.SignatureInfo = bundleInfo.signatureInfo;
hilog.info(0x0000, 'Application', 'getBundleInfoForSelf successfully: %{public}s', JSON.stringify(bundleInfo));
}
});
} catch (err) {
let message = (err as BusinessError).message;
hilog.error(0x0000, 'Application', 'getBundleInfoForSelf failed: %{public}s', message);
}
其中 SignatureInfo里有【应用包的指纹信息】
SignatureInfo
描述应用包的签名信息。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
系统能力: 以下各项对应的系统能力均为SystemCapability.BundleManager.BundleFramework.Core
名称 | 类型 | 只读 | 可选 | 说明 |
---|---|---|---|---|
appId | string | 是 | 否 | 应用的appId。 |
fingerprint | string | 是 | 否 | 应用包的指纹信息。使用的签名证书发生变化,该字段会发生变化。 |
appIdentifier11+ | string | 是 | 否 | 应用的唯一标识,是AppGallery Connect创建应用时分配的APP ID,为云端统一分配的随机字符串。该ID在应用全生命周期中不会发生变化,包括版本升级、证书变更、开发者公私钥变更、应用转移等。 |
更多关于如何获取应用指纹 HarmonyOS 鸿蒙Next的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,获取应用指纹可以通过使用[@ohos](/user/ohos).security.cryptoFramework
模块中的相关API实现。具体步骤如下:
-
导入模块:首先需要导入
cryptoFramework
模块。import cryptoFramework from '[@ohos](/user/ohos).security.cryptoFramework';
-
创建指纹生成器:使用
cryptoFramework.createMd()
方法创建一个MD5或SHA256的指纹生成器。let md = cryptoFramework.createMd('SHA256');
-
更新数据:将要生成指纹的数据更新到生成器中。可以是应用的某个特定数据或文件内容。
md.update({ data: new Uint8Array([0x01, 0x02, 0x03, 0x04]) });
-
生成指纹:调用
digest()
方法生成指纹。md.digest().then((digestData) => { console.info('应用指纹:', Array.prototype.map.call(new Uint8Array(digestData), x => ('00' + x.toString(16)).slice(-2)).join('')); }).catch((error) => { console.error('生成指纹失败:', error); });
-
处理结果:生成的指纹是一个字节数组,通常需要转换为十六进制字符串以便使用。
通过上述步骤,可以在HarmonyOS鸿蒙Next中获取应用指纹。