通过编程获取SHA1
Getting SHA1 through programming
这是我的应用程序的签名报告:
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)?
我想将其中一个保存在服务器上。使用应用程序时,应检查这些值与存储在服务器中的值,如果不相等则退出并终止进程(我这样做是为了防止我的应用程序被破解)
看来你是要查版本。
如果是这样,您就误解了散列的目的。
散列用于检查数据完整性而不是用于验证。
如果您只是上传值并在服务器中检查它,使用或不使用散列对安全性没有影响。
这个答案取自
看看这个功能
// 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))
这是我的应用程序的签名报告:
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)? 我想将其中一个保存在服务器上。使用应用程序时,应检查这些值与存储在服务器中的值,如果不相等则退出并终止进程(我这样做是为了防止我的应用程序被破解)
看来你是要查版本。 如果是这样,您就误解了散列的目的。 散列用于检查数据完整性而不是用于验证。 如果您只是上传值并在服务器中检查它,使用或不使用散列对安全性没有影响。
这个答案取自
// 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))