SHA1 durch Programmierung erhalten

Dec 11 2020

Dies ist so etwas wie meine App zum Signieren von Berichten:

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

Gibt es eine Möglichkeit, diesen Code (MD5, SHA1, SHA-256) durch Android-Programmierung zu erhalten? Ich möchte einen davon auf dem Server speichern. Wenn Sie die App verwenden, sollten diese Werte mit den auf dem Server gespeicherten Werten überprüft werden. Wenn dies nicht gleich ist, beenden Sie den Vorgang und beenden Sie ihn (ich tue dies, um zu verhindern, dass meine App Risse bekommt).

Antworten

1 MohammadKhairPK Dec 11 2020 at 16:17

Diese Antwort stammt aus einer anderen Antwort. Überprüfen Sie diese Funktion

// 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())
    }
}

Um es zu benutzen, nenne es so

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

Es scheint, dass Sie nach einer Versionsprüfung suchen. Wenn ja, missverstehen Sie den Zweck des Hashings. Hashing dient zur Überprüfung der Datenintegrität und nicht zur Überprüfung. Es macht keinen Sicherheitsunterschied, ob Hash verwendet wird oder nicht, wenn Sie nur den Wert hochladen und ihn auf dem Server überprüfen.