如何获取应用签名证书的hash值?

如何获取应用签名证书的hash值

阅读 372
1 个回答

“应用指纹”signatureInfo.fingerprint是应用签名证书(.cer文件)的SHA-256hash值,当前支持获取本应用的“应用指纹”。示例代码如下:

import { bundleManager } from '@kit.AbilityKit'; 
import { hilog } from '@kit.PerformanceAnalysisKit'; 
import { BusinessError } from '@kit.BasicServicesKit'; 
 
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)); 
    //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); 
}

对于hash值,可使用加解密框架的hash算法,目前支持SHA1、SHA224、SHA256、SHA384、SHA512、MD5。示例代码如下:

import { common } from '@kit.AbilityKit'; 
import { BusinessError } from '@kit.BasicServicesKit'; 
import { hash }from '@kit.CoreFileKit'; 
 
let context = getContext(this) as common.UIAbilityContext; 
let pathDir = context.filesDir; 
 
let filePath = pathDir + "/test.txt"; 
hash.hash(filePath, "sha256").then((str: string) => { 
  console.info("calculate file hash succeed:" + str); 
}).catch((err: BusinessError) => { 
  console.error("calculate file hash failed with error message: " + err.message + ", error code: " + err.code); 
});

参考链接

应用包的签名信息

文件哈希处理

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进