HarmonyOS 鸿蒙Next 第三方应用怎么获取应用签名证书的hash值

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

HarmonyOS 鸿蒙Next 第三方应用怎么获取应用签名证书的hash值 第三方应用怎么获取应用签名证书的hash值

2 回复

三方应用可以通过"bundleManager.getBundleInfoForSelf"获取当前应用的BundleInfo获取自身的应用包信息,其中入参bundleFlags指定所返回的BundleInfo中所包含的信息。

代码示例:

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

let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_DEFAULT;
try {
  bundleManager.getBundleInfoForSelf(bundleFlags).then((data) => {
    hilog.info(0x0000, 'testTag', 'getBundleInfoForSelf successfully. Data: %{public}s', JSON.stringify(data)); //data里可以获取到signatureInfo,即应用的签名证书信息
  }).catch((err: BusinessError) => {
    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);
}

signatureInfo.fingerprint是应用签名证书(.cer文件)的SHA256 hash值,对于hash值,可使用加解密框架的hash算法,目前支持SHA1、SHA224、SHA256、SHA384、SHA512、MD5

示例:

let filePath = pathDir + "/test.txt";
Hash.hash(filePath, "sha256").then((str: string) => {
  console.info("calculate file hash succeed:" + str);
}).catch((err: BusinessError) => {
  console.info("calculate file hash failed with error message: " + err.message + ", error code: " + err.code);
});

更多关于HarmonyOS 鸿蒙Next 第三方应用怎么获取应用签名证书的hash值的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,第三方应用获取其应用签名证书的hash值通常涉及对APK(Android应用包,虽然鸿蒙有HAP格式,但此处假设是APK或兼容APK的情况)文件进行解析并提取签名信息。以下是获取应用签名证书hash值的基本步骤:

  1. 使用keytool工具:如果你已经拥有应用的签名证书文件(.keystore或.pem),可以直接使用Java提供的keytool工具来获取证书的SHA-256 hash值。但注意,此方法不适用于直接从APK中提取。

  2. 从APK中提取证书

    • 使用apksigner工具(Android SDK提供)或jarsigner工具来验证APK的签名,并提取公钥证书。
    • 将提取的证书保存为文件,然后使用OpenSSL等工具计算其SHA-256 hash值。
  3. 计算hash值

    • 对于提取的证书文件,使用OpenSSL命令如openssl dgst -sha256 -binary <certificate_file> | openssl base64 -A来计算SHA-256 hash值,并转换为Base64或十六进制格式(根据需要)。

在鸿蒙系统中,虽然工具链可能与Android有所不同,但基本原理相似。如果鸿蒙提供了专门的工具或API来处理此类任务,应优先使用鸿蒙官方提供的方法。

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

回到顶部