【问题标题】:Getting SHA1 through programming通过编程获取SHA1
【发布时间】:2021-03-22 15:08:09
【问题描述】:

这有点像我的应用程序的签名报告:

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)? 我想将其中一个保存在服务器上。使用应用程序时,这些值应与存储在服务器中的值进行检查,如果不相等则退出并终止进程(我这样做是为了防止我的应用程序破解)

【问题讨论】:

  • 感谢您的回答,我不是故意将文件转换为哈希码,
  • @SuperMan From Wikipedia“在密码学中,SHA-1(安全哈希算法 1)是一种密码哈希函数。 --- 应用MD5、SHA1、SHA-256的结果都是哈希码。
  • @Andreas 我明白,但我的目的是做类似于部落冲突游戏的事情,在部落冲突游戏中,首先会检查游戏文件以及文件是否有任何更改,您将无法进入游戏。
  • @SuperMan 我在评论你的矛盾,你想要 SHA-1 而不是哈希码,因为 SHA-1 一个哈希码,也就是一个摘要。

标签: java android gradle signing cracking


【解决方案1】:

这个答案来自another answer 看看这个功能

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

【讨论】:

    【解决方案2】:

    您似乎正在寻找版本检查。 如果是这样,您就误解了散列的目的。 散列用于检查数据完整性,而不是用于验证。 如果您只是上传值并在服务器中检查它,则使用哈希与不使用哈希没有任何安全差异。

    【讨论】:

      猜你喜欢
      • 2015-09-18
      • 2018-03-06
      • 2021-03-25
      • 1970-01-01
      • 2013-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多