如何在 android studio 上为 Android Apk 文件生成 SHA512 校验和

How do I generate SHA512 checksum for an Android Apk file on android studio

我需要为下载的 apk 文件生成校验和,并与下载 apk 时发送的另一个校验和进行比较。这必须在 android 工作室中完成。

您基本上是在要求计算文件的 SHA-512,文件类型无关紧要:apk、zip、exe...

Android 上有很多关于计算不同哈希值的信息。为了过滤答案,我认为您可以考虑 APK 文件的大小。您想要计算什么哈希并不重要,因为唯一改变的可能只是一行:

    MessageDigest.getInstance("MD5")
    MessageDigest.getInstance("SHA1")
    MessageDigest.getInstance("SHA-256")
    MessageDigest.getInstance("SHA-512")

例如,如果APK很重,你可以检查一下:

这个很棒,因为它可以处理块,所以不需要将整个文件加载到内存中。

然后,一旦你计算了两个哈希值,你就可以将它们转换为 Base64,以便像常规那样比较它们 String

之前的答案确实有效,但是代码很多。 找到了使用 apache commons 的简单方法。

添加 apache commons 以构建 gradle

implementation group: 'commons-codec', name: 'commons-codec', version: '1.12'
private fun checksum(destination: String) {
        try {
            val array = Files.readAllBytes(Paths.get(destination))
            val genchecksum = DigestUtils.sha512Hex(array)

            apkChecksum = genchecksum.toString()

        } catch (e: Exception) {
            Log.e(javaClass.simpleName, "File error", e)
        }
    }

注意 -- destination 是文件名

的文件的路径

示例

var destination = context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).toString()/filename.apk