Mendapatkan SHA1 melalui pemrograman

Dec 11 2020

Ini adalah sesuatu seperti signinig report's my app:

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

Apakah ada cara untuk mendapatkan kode ini (MD5, SHA1, SHA-256) melalui pemrograman Android? Saya ingin menyimpan salah satunya di server. Saat menggunakan aplikasi, nilai-nilai ini harus diperiksa dengan nilai-nilai yang disimpan di server, jika tidak sama dengan keluar dan menghentikan proses (saya melakukan ini untuk mencegah aplikasi saya dari retak)

Jawaban

1 MohammadKhairPK Dec 11 2020 at 16:17

Jawaban ini diambil dari jawaban lain. Lihat fungsi ini

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

Untuk menggunakannya, sebut saja seperti ini

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

Tampaknya Anda sedang mencari pemeriksaan versi. Jika demikian, Anda salah paham tentang tujuan hashing. Hashing untuk memeriksa integritas data dan bukan untuk memverifikasi. Tidak ada bedanya keamanan menggunakan hash atau tidak, jika Anda hanya mengunggah nilai dan memeriksanya di server.