プログラミングによるSHA1の取得

Dec 11 2020

これは、signinigレポートの私のアプリのようなものです。

Variant: release
Config: config
Store: C:\Users\Superman\Desktop\web.jks
Alias: web
MD5: 8C:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
SHA1: D3:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
SHA-256: A0:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
Valid until: Sunday, December 4, 2044

Androidプログラミングを介してこのコード(MD5、SHA1、SHA-256)を取得する方法はありますか?そのうちの1つをサーバーに保存したいと思います。アプリを使用するとき、これらの値はサーバーに保存されている値で確認する必要があります。それが等しくない場合は、終了してプロセスを強制終了します(アプリがクラックするのを防ぐためにこれを行います)

回答

1 MohammadKhairPK Dec 11 2020 at 16:17

この答えは別の答えから取ったものですこの機能をチェックしてください

// key like: SHA1, SHA256, MD5.
private fun get(key: String, info: PackageInfo) {
    try {
        for (signature in info.signatures) {
            val md: MessageDigest = MessageDigest.getInstance(key)
            md.update(signature.toByteArray())
            val digest: ByteArray = md.digest()
            val toRet = StringBuilder()
            for (i in digest.indices) {
                if (i != 0) toRet.append(":")
                val b: Byte = digest[i] and 0xff.toByte()
                val hex = Integer.toHexString(b.toInt())
                if (hex.length == 1) toRet.append("0")
                toRet.append(hex)
            }
            Log.d(TAG, "key: $key $toRet")
        }
    } catch (e1: PackageManager.NameNotFoundException) {
        Log.e(TAG, e1.toString())
    } catch (e: NoSuchAlgorithmException) {
        Log.e(TAG, e.toString())
    } catch (e: Exception) {
        Log.e(TAG, e.toString())
    }
}

それを使用するには、このように呼び出します

get("SHA1", packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES))
1 mingchen Dec 11 2020 at 16:10

バージョンチェックをお探しのようです。もしそうなら、あなたはハッシュの目的を誤解しています。ハッシュはデータの整合性をチェックするためのものであり、検証するためのものではありません。値をアップロードしてサーバーでチェックするだけの場合は、ハッシュを使用してもセキュリティに違いはありません。