SHA1 durch Programmierung erhalten
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
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))
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.