如何获取应用指纹 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

3 回复

如下

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里有【应用包的指纹信息】

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-bundlemanager-bundleinfo-V13#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实现。具体步骤如下:

  1. 导入模块:首先需要导入cryptoFramework模块。

    import cryptoFramework from '[@ohos](/user/ohos).security.cryptoFramework';
    
  2. 创建指纹生成器:使用cryptoFramework.createMd()方法创建一个MD5或SHA256的指纹生成器。

    let md = cryptoFramework.createMd('SHA256');
    
  3. 更新数据:将要生成指纹的数据更新到生成器中。可以是应用的某个特定数据或文件内容。

    md.update({ data: new Uint8Array([0x01, 0x02, 0x03, 0x04]) });
    
  4. 生成指纹:调用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);
    });
    
  5. 处理结果:生成的指纹是一个字节数组,通常需要转换为十六进制字符串以便使用。

通过上述步骤,可以在HarmonyOS鸿蒙Next中获取应用指纹。

回到顶部