Signature Verification Catches What a Checksum Cannot
SHA-256 proves the file matches the listing. It says nothing about who built it. Signature verification is what catches repackaged APKs.
Two Different Questions
A checksum answers integrity: did this file arrive intact and unmodified from whatever was published. A signature answers authenticity: which signing key produced this build. They are not substitutes, and a repackaged APK is exactly the case where the difference decides the outcome.
Consider the failure mode. An attacker takes a legitimate APK, injects an ad or tracker SDK, re-signs it with their own key, and publishes it with a fresh checksum. The checksum matches the file perfectly, because they computed it after modifying the file. Nothing about that comparison protects you. The signing certificate is what differs, and it differs permanently.
How Android Uses the Certificate
Android ties app identity to the pair of package name and signing certificate. An update is only accepted when both match the installed copy. This is why a repackaged build cannot quietly replace a legitimate one: the install fails with a signature mismatch rather than succeeding silently.
That failure is a security control doing its job. The common advice to uninstall the original and install the new file works mechanically, and it also discards the exact protection that just fired. Before doing it, the question worth answering is why the certificate changed at all.
Legitimate certificate changes happen. A developer rotates signing keys, or moves to Play App Signing. Those are announced and documented. An unannounced change on a build from an unfamiliar mirror fits a different pattern.
Tips
Checksum match, unexpected signer
Repackaged build — Discard; the checksum was computed after modification
Signature mismatch on update
Install attempt fails — Ask why the signer changed before uninstalling the original
Reading the Signer From a File
Android build-tools ship apksigner, which reports the certificate digests for an APK without installing it. Run apksigner verify --print-certs file.apk and read the SHA-256 digest of the signing certificate. Keytool on a JDK gives equivalent output.
The digest is only useful compared against something. For an app you already have installed, compare the new file's signer digest against the installed copy. For a first install, the value tells you which signer to expect on every future update of that app, which is when the comparison starts paying off.
Verify the APK signature scheme version too. Modern builds use v2 or later, which signs the whole archive rather than individual entries. A build presenting only the legacy v1 scheme is either old or has been through tooling that stripped the newer block.
Practical Sequence Before Any Install
Checklist
- 1Compute SHA-256 on the exact file on disk and compare against the listing.
- 2Run apksigner verify --print-certs and record the certificate digest.
- 3Compare that digest against the installed copy, if you already have the app.
- 4Confirm the signature scheme is v2 or later.
- 5Read the declared permission list before first launch, not after.
- 6Treat a checksum match with an unexpected signer as the stronger signal, and stop.
Why Signature Checking Is the Step That Cannot Be Skipped
Checksums are often skipped on the reasoning that they are the simplest check. The reasoning is sound, and the conclusion is backwards. A checksum answers whether the file is intact and unmodified since the value was published; a signature answers who built it. Only one of those two questions is about trust, and the trust question is the one the checksum cannot address.
The reason is structural. A checksum is a value the publisher computes and the mirror republishes. Anyone who modifies the file can recompute it afterwards and publish the new value alongside, so a checksum match confirms only that the file matches the number printed next to it — not that the number came from the publisher. A signature cannot be reproduced this way: producing a valid signature requires the developer's private key, which is the entire basis of the scheme.
This is also why a repackaged file often passes a checksum check that a signature comparison would catch immediately. Anyone repackaging an app is already decompiling and rebuilding it, and the rebuild step forces a re-sign — so the certificate differs by construction. Android enforces the same rule when it refuses to update an installed app with a differently-signed build, which means the platform is applying exactly the check this guide recommends whenever you install an update.
Cross-check Against the ComeAPK Manifest
The signature digest is only useful when compared to the developer's current signer. Confirm package name, version, file size, and SHA-256 of the APK you are checking against /en/come-app/#platform-manifest or /en/dream11-app/#site-downloads; a signer digest that does not match the manifest signer means the file is not a developer-signed release, regardless of how the local signature verification passes.
The package name, version, file size, and SHA-256 values discussed in "Signature Verification Catches What a Checksum Cannot" are all anchored at the ComeAPK release manifest, and a mismatch on any field is treated as tampering evidence per /en/blog/sha-256-apk-integrity/ — delete the build and re-fetch from the verified manifest.
Frequently Asked Questions
What is the difference between a signature and a checksum?+
A checksum proves the file is unmodified since that value was computed; a signature proves who built it. Anyone who modifies a file can recompute its checksum, so a checksum match only confirms agreement with the number printed next to it. A valid signature requires the developer's private key, which is what makes it evidence of provenance rather than integrity.
Do I need apksigner to check an APK's signature?+
apksigner ships with the Android SDK build-tools and is the standard tool. On a device, look under the app's details for the installer or certificate information the platform records. The certificate digest is what you compare — against a previously installed build of the same package, or against the digest published by the developer.
Why does Android refuse to update an app signed by a different key?+
Because allowing it would let any app replace another, including one that had been granted permissions or held your data. The refusal is the platform enforcing the same provenance rule this guide recommends you verify manually — and it is why a modded build cannot be overwritten by the official version without uninstalling it first.
Is a matching SHA-256 enough to skip the signature check?+
No, and the two checks are not redundant. The checksum answers whether the bytes changed; the signature answers whether the developer's key produced them. A repackaged build passes a checksum computed after modification while failing a signature comparison, so skipping the signature check removes the only test that detects it.
