รับ 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
มีวิธีรับรหัสนี้ (MD5, SHA1, SHA-256) ผ่านการเขียนโปรแกรม Android หรือไม่? ฉันต้องการบันทึกหนึ่งในนั้นบนเซิร์ฟเวอร์ เมื่อใช้แอปควรตรวจสอบค่าเหล่านี้ด้วยค่าที่เก็บไว้ในเซิร์ฟเวอร์หากไม่เท่ากันออกและฆ่ากระบวนการ (ฉันทำเช่นนี้เพื่อป้องกันไม่ให้แอปของฉันแตก)
คำตอบ
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
ดูเหมือนว่าคุณกำลังมองหาการตรวจสอบเวอร์ชัน หากเป็นเช่นนั้นคุณเข้าใจผิดวัตถุประสงค์ของการแฮช การแฮชมีไว้เพื่อตรวจสอบความสมบูรณ์ของข้อมูลไม่ใช่เพื่อการยืนยัน ไม่มีความแตกต่างด้านความปลอดภัยโดยใช้แฮชหรือไม่หากคุณเพียงแค่อัปโหลดค่าและตรวจสอบในเซิร์ฟเวอร์