Ferramentas para desenvolvedores · SHA calculadora de hash
SHA-256 vs SHA-512: tamanho da palavra, rodadas e por que 512 pode ser mais rápido
· Como funciona
sha-256 criptografia desempenho APIs do navegador
SHA-512 produz um resumo mais longo, mas geralmente é executado mais rapidamente em hardware de 64 bits. Esta postagem explica as diferenças estruturais entre os dois e como SHA-384 se encaixa, para que você possa escolher com base nos fatos.
Hash mais longo, execução mais rápida? - a observação contra-intuitiva que inicia a comparação
SHA-512 produz um resumo mais longo, mas geralmente é executado mais rápido que SHA-256 em hardware de 64 bits. A observação contra-intuitiva vem do design CPU: um processador otimizado para aritmética de 64 bits executa operações de 64 bits mais rápido do que operações de 32 bits nos mesmos dados. SHA-256 opera em palavras de 32 bits, enquanto SHA-512 opera em palavras de 64 bits. Em um 64 bits CPU, o último se adapta ao hardware de maneira mais natural e gasta menos tempo em conversões e preenchimento de tamanho de palavra.
Isso não torna SHA-512 inerentemente melhor para todos os casos de uso. Um resumo mais longo exige mais armazenamento e largura de banda. A escolha entre eles deve ser feita com base nos requisitos de tamanho de produção e na plataforma, e não em uma vaga sensação de "mais novo" ou "mais forte".
Palavras de 32 bits versus palavras de 64 bits — a principal diferença estrutural e por que é adequada para CPUs modernas
SHA-256 opera em palavras de 32 bits em todo o algoritmo. A programação de mensagens expande palavras de 16 32 bits em palavras de 64 32 bits. Cada rodada atualiza oito variáveis de trabalho de 32 bits. O bloco de mensagem é 512 bits (dezesseis palavras de 32 bits). A saída é 256 bits (oito palavras de 32 bits). Toda a aritmética é feita em valores de 32 bits, com overflow wrap em 2^32.
SHA-512 opera em palavras de 64 bits. A programação de mensagens expande palavras de 16 64 bits em palavras de 80 64 bits (não 64, como em SHA-256). Cada rodada atualiza oito variáveis de trabalho de 64 bits. O bloco de mensagem é 1024 bits (dezesseis palavras de 64 bits). A saída é 512 bits (oito palavras de 64 bits). Toda a aritmética é feita em valores de 64 bits, com encapsulamento de overflow em 2^64.
64 rodadas versus 80, blocos 512 bits versus 1024 bits — o que muda por bloco e por byte
SHA-256 executa 64 rodadas por bloco; SHA-512 executa 80 rodadas por bloco. Isso significa que SHA-512 faz mais mixagens por bloco. À primeira vista, isso parece mais lento. Mas o tamanho maior da palavra e do bloco significa que SHA-512 processa mais bits por rodada. Para um arquivo de 1 megabyte, SHA-256 processa blocos 1048576 / 512 = 2048, cada um com 64 rodadas, para um total de 131072 rodadas. SHA-512 processa blocos 1048576 / 1024 = 1024, cada um com 80 rodadas, para um total de 81920 rodadas. SHA-512 faz menos rodadas no total, embora faça mais rodadas por bloco.
A diferença no horário do relógio depende da otimização do CPU para o tamanho da palavra. Um CPU com um ALU de 64 bits (unidade lógica-aritmética) executará operações de 64 bits com eficiência. Se o mesmo CPU precisar dividir operações 32 bits SHA-256 em várias microoperações ou executá-las em uma unidade de execução menor, o custo por operação será maior. Os processadores modernos são otimizados para operações de 64 bits, tornando SHA-512 frequentemente mais rápido, apesar das rodadas adicionais por bloco.
O tamanho do bloco e a contagem de rodadas explicam o trabalho por byte; o rendimento real precisa de um benchmark de plataforma
A aritmética do bloco explica por que uma saída mais longa não implica necessariamente mais trabalho por byte. SHA-256 executa sessenta e quatro rodadas para cada bloco de 512 bits, enquanto SHA-512 executa oitenta rodadas para cada bloco de 1,024 bits. O segundo design executa mais rodadas em cada bloco, mas consome o dobro de entrada sempre que processa um.
Essa comparação estrutural não prevê um benchmark de navegador específico. O Web Crypto pode usar instruções nativas, bibliotecas de sistema operacional ou outro código otimizado, e o comprimento da entrada altera o compartilhamento gasto na configuração. Meça o ambiente de destino real quando o rendimento for importante; o repositório suporta apenas a afirmação qualitativa de que palavras mais amplas podem ser adequadas ao hardware de 64 bits.
Os comprimentos de saída afetam as propriedades de representação e segurança sem uma estimativa de trabalho de ataque sem fonte
SHA-384 não é um algoritmo separado; é SHA-512 com duas alterações: as constantes de hash iniciais são diferentes e a saída é truncada para 384 bits (48 bytes) em vez do 512 bits completo. Esse truncamento tem um benefício contra ataques de extensão de comprimento: um invasor não pode estender o resumo anexando dados à mensagem original, porque o estado completo de 512 bits é desconhecido (apenas 384 bits dele foi divulgado).
SHA-256 é vulnerável a ataques de extensão de comprimento: se você conhece o resumo de uma mensagem e o comprimento da mensagem, pode anexar dados à mensagem e calcular o resumo da mensagem estendida sem conhecer o conteúdo da mensagem original. Isso é importante em contextos de segurança específicos, como implementações HMAC que usam uma construção fraca. SHA-384, apesar de ser baseado em SHA-512, não é vulnerável porque o estado completo não é exposto. Isso torna SHA-384 útil em contextos onde SHA-256 é considerado arriscado.
Exemplo resolvido - hash de uma entrada com todas as três e comparação dos comprimentos do resumo lado a lado
O tamanho da saída é a distinção mais direta. SHA-256 produz 32 bytes (64 caracteres hexadecimais); SHA-384 produz 48 bytes (96 caracteres hexadecimais); SHA-512 produz 64 bytes (128 caracteres hexadecimais). Para armazenamento em URLs ou JSON, os resumos mais longos ocupam mais espaço. Para resistência à colisão, uma saída mais longa torna as colisões exponencialmente mais difíceis de encontrar. As saídas mais amplas fornecem um espaço de resultados maior, enquanto a consequência imediata do produto é mais simples de medir: mais bytes em armazenamento, URLs e campos de protocolo. Este artigo não anexa uma estimativa do trabalho de ataque porque nenhuma é derivada de evidências do repositório.
Alguns sistemas e padrões especificam SHA-256 explicitamente; outros usam SHA-512 ou permitem uma escolha. SSH impressões digitais são padronizadas como SHA-256; os resumos de imagens do contêiner podem ser SHA-256 ou SHA-512. Gerenciadores de pacotes como o npm usam SHA-512 para integridade de sub-recursos. A escolha geralmente é feita por você, mas compreender as diferenças permite que você escolha sabiamente quando tem uma palavra a dizer.
O que isso não cobre — números de rendimento, que dependem de CPU, compilador e tamanho de entrada; a postagem permanece qualitativa
A calculadora de hash ToolAcre SHA oferece SHA-256, SHA-384 e SHA-512. Faça hash da mesma entrada com todos os três e observe os comprimentos de saída. Os resumos serão todos completamente diferentes uns dos outros, o que é esperado: os algoritmos usam diferentes constantes de rodada, diferentes programações de mensagens e diferentes operações de mixagem. A contagem de bytes exibida ao lado do resumo reflete apenas o tamanho da entrada, não o tamanho da saída; todos os três algoritmos processam os mesmos bytes de entrada de forma idêntica em suas respectivas sequências de rodadas.
Testar em seu próprio hardware revela a diferença de desempenho. Faça hash de um arquivo grande (um caso de teste de vários megabytes) com cada algoritmo e cronometre os resultados. Em sistemas modernos de 64 bits, SHA-512 geralmente será concluído em menos tempo de parede, mesmo que a contagem de bytes possa sugerir o contrário. Em sistemas 32 bits ou processadores incorporados, SHA-256 pode ser mais rápido porque o ALU do CPU é otimizado para operações de 32 bits.
Conclusão: escolha por tamanho de saída e plataforma — a calculadora de hash ToolAcre SHA oferece SHA-256, SHA-384 e SHA-512 para que você possa ver todos os três na mesma entrada
A força criptográfica é separada do desempenho. O repositório não marca SHA-256 como quebrado e o seleciona como padrão de uso geral. Essa evidência do produto não justifica chamar qualquer primitivo de universalmente seguro; a adequação ainda depende do modelo de construção e ameaça. Mudar de SHA-256 para SHA-512 não é uma atualização de segurança; é uma compensação entre armazenamento e desempenho. Se o seu sistema especifica SHA-256 e você precisa desse algoritmo exato, use-o. Se você tiver escolha e quiser um resumo mais longo ou souber que sua plataforma tem 64 bits, SHA-512 é uma escolha válida.
A implementação do Web Crypto do navegador calcula todos os três via crypto.subtle.digest. Seu dispositivo, versão do navegador e carga do sistema em segundo plano afetam o desempenho observado. Mas o ponto principal permanece: SHA-256 e SHA-512 não estão competindo pelo título de “a melhor função hash”. São ferramentas projetadas para diferentes requisitos de saída, e a escolha entre elas é feita com base nas necessidades do seu sistema, e não em reivindicações generalizadas de desempenho.