<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Funções de hash - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Aprenda a codificar - de graça. Tutoriais de programação em Python, JavaScript, Linux e muito mais. ]]>
        </description>
        <link>https://www.freecodecamp.org/portuguese/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Funções de hash - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/portuguese/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sat, 13 Jun 2026 14:16:44 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/portuguese/news/tag/funcoes-de-hash/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ MD5 x SHA-1 x SHA-2 - Qual é o hash de criptografia mais seguro e como verificá-lo ]]>
                </title>
                <description>
                    <![CDATA[ O que é uma função hash? Uma função hash recebe um valor de entrada (como uma string, por exemplo) e retorna um valor de comprimento fixo. Uma função hash ideal tem as seguintes propriedades:  * É rápida [https://en.wikipedia.org/wiki/Hash_function#Efficiency] (em inglês)  * É capaz de retornar uma quantidade enorme ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/md5-x-sha-1-x-sha-2-qual-e-o-hash-de-criptografia-mais-seguro-e-como-verifica-lo/</link>
                <guid isPermaLink="false">6319bb04281b1606c8fcd50f</guid>
                
                    <category>
                        <![CDATA[ Funções de hash ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Glaucia Esppenchutz ]]>
                </dc:creator>
                <pubDate>Mon, 03 Oct 2022 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2022/09/Hash_function_long.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/md5-vs-sha-1-vs-sha-2-which-is-the-most-secure-encryption-hash-and-how-to-check-them/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">MD5 vs SHA-1 vs SHA-2 - Which is the Most Secure Encryption Hash and How to Check Them</a>
      </p><h1 id="o-que-uma-fun-o-hash"><strong>O que é uma função </strong><em><strong>hash</strong></em><strong>?</strong></h1><p>Uma função <em>hash</em> recebe um valor de entrada (como uma <em>string</em>, por exemplo) e retorna um valor de comprimento fixo. Uma função <em>hash</em> <strong>ideal</strong> tem as seguintes propriedades:</p><ul><li>É <a href="https://en.wikipedia.org/wiki/Hash_function#Efficiency">rápida</a> (em inglês)</li><li>É capaz de retornar uma quantidade enorme de valores <em>hash</em></li><li>Gera valores únicos de <em>hash</em> para cada entrada (sem colisões)</li><li>Gera diferentes de <em>hash</em> para valores de entrada similares</li><li>Os valores <em>hash</em> não tem padrão discernível em sua <a href="https://en.wikipedia.org/wiki/Hash_function#Uniformity">distribuição</a> (em inglês)</li></ul><p>Não existe uma função <em>hash</em> ideal, claro, mas cada uma procura operar o mais perto possível do ideal. Dado que (em grande parte) as funções de <em>hash</em> retornam valores de comprimento fixo e que o intervalo de valores é, portanto, restrito, essa restrição pode ser praticamente ignorada. O número de valores possíveis que podem ser retornados por uma função <em>hash</em> de 256 bits, por exemplo, é aproximadamente o mesmo número de <a href="https://nakamoto.com/hash-functions/#collision-resistance">átomos no universo</a> (em inglês).</p><p>Idealmente, uma função <em>hash</em> não retorna colisões, praticamente - dito isso, dois valores de entrada não geram <em>hashes</em> iguais. Isso é particularmente importante para <a href="https://pt.wikipedia.org/wiki/Fun%C3%A7%C3%A3o_hash_criptogr%C3%A1fica">funções <em>hash</em> de criptografia</a>: colisões de <em>hashes</em> são consideradas <a href="https://en.wikipedia.org/wiki/Collision_resistance">vulnerabilidades</a> (em inglês).</p><p>Por fim, uma função <em>hash</em> deve gerar valores imprevisíveis para cada valor de entrada. Por exemplo, observe as duas sentenças abaixo com valores similares:</p><pre><code>1. "The quick brown fox."
2. "The quick brown fax."
</code></pre><p>Podemos comparar os <a href="https://www.md5hashgenerator.com/">valores <em>hash</em> gerados em MD5</a> para cada uma das duas sentenças:</p><pre><code>1. 2e87284d245c2aae1c74fa4c50a74c77
2. c17b6e9b160cda0cf583e89ec7b7fc22
</code></pre><p>Dois valores diferentes foram gerados para duas sentenças similares, o que é uma propriedade muito útil para validação e para a criptografia. Isso é um corolário de uma <a href="https://en.wikipedia.org/wiki/Hash_function#Uniformity">distribuição</a> (em inglês): os valores <em>hash</em> de todas as entradas deveriam propagar de maneira uniforme e imprevisível em todo o intervalo de valores possíveis de <em>hash</em>.</p><h1 id="fun-es-hash-comuns"><strong>Funções <em>hash</em> comuns</strong></h1><p>Existem diversas funções <em>hash</em> amplamente usadas. Todas foram desenhadas por matemáticos e cientistas da computação. &nbsp;Ao longo de mais pesquisas, algumas mostraram ter alguns pontos fracos. Ainda assim, foram consideradas boas o suficiente para aplicações não criptográficas.</p><h2 id="md5"><strong><strong>MD5</strong></strong></h2><p>Uma função <em>hash</em> MD5 produz valores <em>hash</em> de 128 bits. Ela foi projetada para uso criptográfico, mas algumas vulnerabilidades foram descobertas no mesmo período e, por conta disso, passou a não ser mais recomendada. No entanto, ainda é usada para particionamento de banco de dados e somas de verificação de computação para validar transferências de arquivos. </p><h2 id="sha-1"><strong><strong>SHA-1</strong></strong></h2><p>SHA significa <em>Secure Hash Algorithm</em> (ou Algoritmo de <em>Hash</em> Seguro, em português). A primeira versão do algoritmo foi a SHA-1, seguida mais tarde pela SHA-2 (veja abaixo).</p><p>Enquanto o MD5 produz um <em>hash</em> de 128 bits, o SHA-1 gera um <em>hash</em> de 160 bits (20 bytes). Em um formato hexadecimal, isso seria um valor inteiro de 40 algarismos. Como o MD5, ele foi projetado para criptografia de aplicações, mas também foram encontradas vulnerabilidades. Hoje, é considerado tão pouco resistente a ataques quanto o MD5.</p><h2 id="sha-2"><strong><strong>SHA-2</strong></strong></h2><p>A segunda versão do SHA, chamada de SHA2, tem muitas variações. Provavelmente, uma das mais comuns é a SHA-256, cujo uso é recomendado pelo National Institute of Standards and Technology (NIST) no lugar do MD5 ou do SHA-1.</p><p>O algoritmo SHA-256 retorna um valor <em>hash</em> de 256 bits, ou 64 algarismos hexadecimais. Mesmo que ainda não seja perfeito, pesquisas recentes indicam que ele é consideravelmente mais seguro do que o MD5 ou o SHA-1.</p><p>Em termos de desempenho, o SHA-256 é entre 20 a 30% mais lento de calcular do que o MD5 ou o SHA-1.</p><h2 id="sha-3"><strong><strong>SHA-3</strong></strong></h2><p>Esse método <em>hash</em> foi desenvolvido no final de 2015 e ainda não foi visto em amplo uso. Seu algoritmo não se relaciona com seu predecessor, o SHA-2.</p><p>O algoritmo SHA3-256 é uma variante com aplicabilidade equivalente à do SHA-256 anterior, demorando um pouco mais para calcular do o SHA-2.</p><h1 id="usando-valores-hash-para-valida-o"><strong>Usando valores <em>hash</em> para validação</strong></h1><p>O uso típico de uma função <em>hash</em> é fazer verificações de validação. Um uso frequente é a validação de coleções de arquivos comprimidos, como arquivos do tipo .zip ou .tar.</p><p>Dado o arquivo e o seu valor de <em>hash</em> esperado (comumente referido como uma <a href="https://techterms.com/definition/checksum">soma de verificação</a> - ou <em>checksum</em>, em inglês), você pode realizar seu próprio cálculo de <em>hash</em> para validar se o arquivo que recebeu está completo ou corrompido.</p><p>Por exemplo, eu posso gerar uma soma de verificação de MD5 para um arquivo .tar a partir de um sistema Unix usando os seguintes comandos:</p><pre><code>tar cf - files | tee tarfile.tar | md5sum -
</code></pre><p>Para conseguir o <em>hash</em> MD5 para um arquivo no Windows, use o comando <a href="https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/get-filehash?view=powershell-7">Get-FileHash</a> no PowerShell.</p><pre><code>Get-FileHash tarfile.tar -Algorithm MD5
</code></pre><p>A soma de verificação gerada pode ser exibida no local de download, próximo ao link de download. Para o receptor, uma vez que ele faz o download do arquivo, ele também pode fazer a validação de que está tudo correto executando o seguinte comando: </p><pre><code>echo '2e87284d245c2aae1c74fa4c50a74c77 tarfile.tar' | md5sum -c
</code></pre><p>onde <strong><strong>2e87284d245c2aae1c74fa4c50a74c77</strong> </strong>é o valor postado da soma de verificação. Uma execução com sucesso do comando acima gerará um <em>status</em> de "OK" como esse:</p><pre><code>echo '2e87284d245c2aae1c74fa4c50a74c77 tarfile.tar' | md5sum -ctarfile.tar: OK</code></pre> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
