This article has been translated from English to Portuguese.

Antes de mergulharmos no assunto da mineração de Bitcoin, precisamos de fazer um rápido desvio e aprender sobre um certo conceito que é fundamental para as criptomoedas.

Para entenderes verdadeiramente como funcionam a Bitcoin e outras criptomoedas, é crucial compreenderes primeiro o conceito de "hashing".

Quando vês a palavra "hash", algumas pessoas podem pensar em hash browns, um popular alimento de pequeno-almoço americano, enquanto outras pessoas, como Snoop Dogg, podem pensar no produto concentrado de cannabis. 🌿

Wrong kind of hash

Nesta lição, vou falar-te de um tipo diferente de haxixe!

É um conceito técnico, mas com o qual tens de estar familiarizado, por isso vou explicar-te tudo com calma.

Estar familiarizado com o conceito de hashing também é necessário para entender como funciona a mineração de Bitcoin (que é o próximo guia), então , por favor, não pule essas lições. 👁️

O que é hashing?

Hashing é um método de criptografia que converte qualquer forma de dados numa sequência única de texto de comprimento fixo.

A criptografia é a prática e o estudo de técnicas para proteger a comunicação de observadores externos. Na era da Internet, a criptografia é utilizada para proteger informações ou "dados" do computador.

Se ainda não era óbvio, o "crypto" em criptomoedas significa criptografia.

O hashing é uma parte fundamental da criptografia. E desempenha um papel enorme por trás do "cripto" nas criptomoedas.

Em termos simples, hashing significa introduzir texto de QUALQUER comprimento através de uma função hash que produz uma saída de um comprimento FIXO.

Hash Function

Qualquer pedaço de dados pode ser "hashizado", independentemente do seu tamanho, tipo ou comprimento.

O hash que é produzido tem sempre o mesmo comprimento.

Nos exemplos abaixo, usando a função de hash SHA-1, independentemente do comprimento da "entrada", a "saída" tem sempre 40 caracteres.

Hashing Example - Hello

Hashing Example - BabyPips.com

Hashing Example - i

Faz uma comparação rápida dos três exemplos:

Entrada Hash
Olá f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0
BabyPips.com 8c8780d0b70c5ef42a534846cc042629cf07a440
I ca73ab65568cd125c2d27a22bbd9e863c10b675d

Repara que, apesar de os "inputs" variarem, os três hashes continuam a ter 40 caracteres.

Neste exemplo específico, o comprimento fixo é de 40 caracteres, o que é determinado pela função de hash específica usada ("SHA-1"), que será explicada mais tarde.

Por enquanto, fica a saber que outras funções de hash podem produzir comprimentos fixos diferentes. A maioria tem comprimentos fixos superiores a 40 caracteres.

Um hash funciona como uma impressão digital.

Um dado único produzirá sempre o mesmo hash.

Por exemplo, se executares "Olá" um milhão de vezes através de uma função de hash, o hash acima é o que aparecerá um milhão de vezes.

Para a palavra "Olá", o seu hash SHA-1 será sempre:

f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0

E apenas "Hello" produzirá esse hash.

Se alterares "Hello", mesmo que seja apenas para "hello", a função hash produzirá um valor hash totalmente diferente.

É por isso que os hashes são conhecidos como "impressões digitais".

Tal como a tua impressão digital é única para ti, um hash é único para uma entrada de dados específica.

A hash is like a fingerprint

Um hash não pode ser revertido.

A ENTRADA numa função de hash chama-se "pré-imagem". Mas para simplificar as coisas, limito-me a usar "entrada".

O RESULTADO da função hash chama-se "valor hash" ou "resumo" ou simplesmente "hash".

Uma função hash foi concebida para atuar de forma unidirecional.

Hash Function is One-Way

Uma vez que uma função hash é uma função unidirecional, a saída, o "hash", não pode ser utilizada para revelar a entrada, a "pré-imagem".

Isto significa que se tudo o que vês é o hash, NÃO serás capaz de decifrar os dados originais (a "pré-imagem") que o hash representa.

As funções de hash produzem hashes irreversíveis.

Irreversível significa que, se só tiveres o hash, não o poderás utilizar para descobrir qual era o dado original. Isto permite que os dados originais permaneçam seguros e desconhecidos.

O que é uma função de hash?

Uma função de hash é uma operação matemática que converte dados de entrada de comprimento arbitrário numa saída de comprimento fixo que é executada utilizando um determinado algoritmo.

Um algoritmo é apenas um conjunto de instruções passo a passo para efetuar cálculos que são realizados por um programa de software.

Não importa se a entrada é uma única letra, uma palavra, uma frase completa, uma página de um livro ou um livro inteiro.

Cada entrada produzirá uma saída única expressa como uma cadeia alfanumérica de comprimento fixo.

Alfanumérico significa apenas que algo consiste em letras e números.

Uma função hash útil esconde quaisquer pistas sobre o aspeto da entrada.

Por exemplo, precisa de ser impossível determinar se a entrada era longa ou curta ou se continha números ou letras. AED, mudando apenas um caractere na entrada, deve resultar numa saída radicalmente diferente.

Funções Hash populares

Todas as funções de hash funcionam de forma semelhante. Introduz dados e a função hash "baralha" os dados e produz um hash.

As funções de hash mais comuns incluem:

  • MD-5: Message Digest 5 (MD5) é uma função de hash comum. No passado, era considerada segura, mas hoje em dia, os hackers descobriram como descodificar o algoritmo e conseguem fazê-lo em segundos.
  • SHA: O Secure Hash Algorithm (SHA) é outro tipo de função de hash. Existem diversas variações de SHA agrupadas em quatro famílias: SHA-0, SHA-1, SHA-2 e SHA-3: Em geral, quanto maior o número, mais recente é a versão e mais seguro é o algoritmo.

Para os nossos propósitos, a única função de hash que precisas de conhecer neste momento é o Secure Hash Algorithm (SHA). Mais especificamente, a família SHA-2, pois contém um membro especial da família chamado SHA-256.

O SHA-256 é uma função de hash que converte uma cadeia de texto noutra cadeia que tem sempre o mesmo comprimento: 64 caracteres alfanuméricos. Isto é equivalente a 256 bits, que é a origem do "256" no seu nome.

É especial porque é a função hash usada em várias partes do sistema Bitcoin, sobre a qual aprenderás em lições posteriores. Por enquanto, é importante apenas saberes que SHA-256 é um tipo de função hash e a que é usada pelo Bitcoin.

Quer a entrada seja uma página de um livro do Harry Potter ou a série inteira de livros do Harry Potter, a saída da função hash SHA-256 será sempre o MESMO comprimento exibido como 64 caracteres alfanuméricos.

Vamos agora ver como funciona o hashing em criptografia.