Como verificar o checksum SHA-256 de um APK no Android e no computador
Confira o hash SHA-256 de um APK com certutil, PowerShell, shasum ou sha256sum, ou no próprio celular, e entenda o que uma correspondência prova.
Um checksum SHA-256 é uma impressão digital de 64 caracteres de um arquivo. Basta mudar um único byte para a impressão digital mudar por completo. Se você calcula o hash do APK que baixou e ele bate com o valor publicado pela fonte, você sabe que está com exatamente o mesmo arquivo do qual eles calcularam o hash.
Isso serve para pegar downloads interrompidos, transferências corrompidas e arquivos trocados. Também tem limites claros, que este guia explica depois do passo a passo.
O que você precisa antes de começar
- O arquivo exatamente como foi baixado. Renomear o arquivo não muda o hash. Editar, recompactar ou assinar de novo muda.
- O valor SHA-256 esperado, publicado pela fonte do arquivo, de preferência numa página que você abriu diretamente via HTTPS.
- Certeza de a qual arquivo o valor se refere. Um contêiner
.xapk,.apksou.apkmtem um hash diferente dos.apkque estão dentro dele. Veja APK, XAPK, APKS e APKM explicados se não tiver certeza de qual você tem.
Não importa se você pegou a versão no catálogo de apps ou de jogos do TechBigs ou em qualquer outro lugar: o método é o mesmo.
No Windows: certutil ou PowerShell
Com o certutil (Prompt de Comando):
- Abra no Explorador de Arquivos a pasta onde está o arquivo.
- Clique na barra de endereço, digite
cmde aperte Enter. Um Prompt de Comando abre nessa pasta. - Execute:
certutil -hashfile "game.apk" SHA256
- A saída mostra uma linha como
SHA256 hash of game.apk:(ou o equivalente no idioma do seu Windows), depois o hash e depois uma mensagem de conclusão. Versões antigas do Windows mostram o hash com espaços entre cada par de caracteres; tire os espaços antes de comparar.
Sempre inclua SHA256. Sem isso, o certutil usa SHA-1 por padrão.
Com o PowerShell:
Get-FileHash .\game.apk -Algorithm SHA256
Para o PowerShell fazer a comparação por você, execute:
(Get-FileHash .\game.apk -Algorithm SHA256).Hash -eq "COLE_O_HASH_ESPERADO"
Ele responde True ou False. A comparação -eq ignora maiúsculas e minúsculas, então não importa como a fonte escreveu as letras.
No macOS: shasum
- Abra o Terminal e vá até a pasta:
cd ~/Downloads - Execute:
shasum -a 256 game.apk
A saída é o hash, dois espaços e o nome do arquivo. Não esqueça o -a 256, porque sem ele o shasum calcula SHA-1.
Para uma comparação automática:
echo "COLE_O_HASH_ESPERADO game.apk" | shasum -a 256 -c
Você vai ver game.apk: OK ou game.apk: FAILED. Repare nos dois espaços entre o hash e o nome do arquivo.
No Linux: sha256sum
sha256sum game.apk
A verificação automática funciona do mesmo jeito:
echo "COLE_O_HASH_ESPERADO game.apk" | sha256sum -c
Se a fonte fornecer um arquivo .sha256 com o hash e o nome do arquivo, coloque-o ao lado do APK e rode sha256sum -c seguido do nome desse arquivo.
No próprio celular Android
O app Arquivos padrão do Android não tem botão de checksum, então há três caminhos práticos:
- Um gerenciador de arquivos que mostre hashes. Alguns gerenciadores de arquivos exibem os valores MD5, SHA-1 e SHA-256 nas propriedades ou nos detalhes de um arquivo. Escolha SHA-256. Uma ferramenta de hash só precisa de acesso ao arquivo que você seleciona, e não de "Acesso a todos os arquivos". O guia de permissões especiais explica por que essa diferença importa.
- ADB a partir de um computador. Se você já usa a depuração USB, rode
adb shell sha256sum /sdcard/Download/game.apk. As versões atuais do Android trazem o comandosha256sumnas ferramentas de sistema integradas. Desligue a depuração USB quando terminar. - Copie o arquivo para um computador e use um dos comandos acima. Muitas vezes é a opção mais simples.
Como comparar do jeito certo
- Compare os 64 caracteres, não só os primeiros e os últimos. As comparações automáticas acima acabam com a dúvida.
- Maiúsculas e minúsculas não importam.
A–Fea–fsão os mesmos dígitos hexadecimais. - Confira o tamanho. MD5 tem 32 caracteres hexadecimais, SHA-1 tem 40 e SHA-256 tem 64. Se os tamanhos forem diferentes, você está comparando algoritmos diferentes.
- Atenção a espaços ou quebras de linha que vêm junto ao copiar o valor de uma página.
O que uma correspondência prova
Um SHA-256 que bate diz uma única coisa: o arquivo no seu aparelho é idêntico, bit a bit, ao arquivo do qual quem publicou calculou o hash. O download não foi interrompido, a transferência não o corrompeu e nenhum espelho, cache ou proxy no caminho o trocou por outro.
O que uma correspondência não prova
- Não prova que o app é inofensivo. Um arquivo malicioso tem um hash perfeitamente válido. Um checksum identifica um arquivo; não o julga.
- Não prova quem criou o arquivo. Se a mesma página entrega o arquivo e o hash, quem controla essa página pode mudar os dois. Um checksum protege mais quando vem por um canal confiável separado do download.
- Não prova a chave de assinatura. O próprio Android verifica as assinaturas dos APKs. Todo APK precisa ser assinado, e uma atualização precisa ter a mesma assinatura da versão já instalada. Versões modificadas são assinadas de novo com outra chave; por isso não instalam por cima da versão oficial, e é preciso desinstalar antes, perdendo os dados locais. Um checksum que bate não diz nada sobre qual chave assinou o arquivo.
- Não prova que o app vai rodar no seu celular. A arquitetura da CPU e a versão mínima do Android continuam importando; veja como descobrir a versão do Android e a arquitetura da CPU.
Se o hash não bater
- Confirme que calculou o hash do arquivo certo. Procure duplicatas como
game (1).apkou downloads incompletos terminados em.crdownloadou.part. - Compare o tamanho do arquivo com o informado pela fonte.
- Confirme que o valor esperado é da mesma versão e do mesmo formato. O hash de um XAPK não vai bater com o do APK que está dentro dele.
- Apague o arquivo e baixe de novo com uma conexão estável.
- Se ainda assim não bater, não instale. Não existe jeito seguro de "consertar" um arquivo diferente do publicado.
Se o hash bate mas a instalação continua falhando, o guia para resolver "App não instalado" cobre conflitos de assinatura, erros de análise do pacote e falta de espaço.
Mantenha as outras camadas de segurança ligadas
- Mantenha o Google Play Protect ligado e leia os avisos dele. Um checksum que bate não anula um aviso do Play Protect sobre o comportamento do app.
- Libere "Instalar apps desconhecidos" só para o navegador ou gerenciador de arquivos que você usou, e desligue depois.
- Depois de instalar, veja o que o app pede. Um jogo pedindo acessibilidade ou acesso a notificações é sinal de alerta, com ou sem checksum batendo.
Perguntas frequentes
Um checksum MD5 ou SHA-1 é suficiente? Os dois ainda detectam corrupção acidental, mas colisões deliberadas são viáveis no MD5 e já foram demonstradas no SHA-1. Prefira SHA-256 quando a fonte oferecer.
Renomear o APK muda o checksum? Não. O hash é calculado sobre o conteúdo do arquivo, não sobre o nome.
E se a página de download não mostrar checksum nenhum? Aí não há com o que comparar. Conte com as outras camadas: mantenha o Play Protect ligado, revise as permissões e desconfie de qualquer app que peça mais do que a função dele exige.