Blog

Postado em em 3 de dezembro de 2022

Criptografia e SHA256? O que são e Como Funcionam?

Você sabe o que é criptografia e SHA256? Hoje eu vou te mostrar como os sites gravam as suas informações de forma segura!

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Criptografia e SHA256

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Já parou para pensar como os sites onde você cadastra as suas senhas as armazenam de forma segura?

Como garantir que nem mesmo as pessoas que trabalham para o site e que tem acesso ao banco de dados saibam qual foi a senha que você criou?

Vamos entender como funciona a Criptografia e SHA256 na aula de hoje?

Em primeiro lugar, o que é o SHA256?

O SHA256 é um tipo de protocolo, uma ferramenta que funciona pegando um texto e fazendo a criptografia deste texto.

Esse sistema SHA256 é usado em muitos lugares na internet, para armazenar senhas, é usado em criptomoedas e em diversos outros lugares.

Isso porque, hoje em dia não existe nenhuma técnica capaz de quebrar essa criptografia.

SHA256:

Se entrarmos no Google e digitarmos SHA256 vamos encontrar essa página.

Como Funciona a Criptografia e SHA256
SHA256.

Nesta página podemos fazer alguns testes.

Vamos escrever “Lira” por exemplo, na parte de “entrada”.

No “resultado” observe que o nome “Lira” foi transformado em uma sequência de letras e números muito confusa.

Se alguém tentasse fazer o caminho de volta, pegar todos esses caracteres e tentar verificar o que eles eram antes de passar pelo SHA256 isso provavelmente daria muito trabalho.

A ponto de ser inviável tentar descobrir, pelo menos atualmente o SHA256 é seguro e ninguém consegue ainda fazer a decodificação dele.

Como Funciona a Criptografia e SHA256
Lira – código.

Como o SHA256 é usado dentro dos sites e aplicativos?

O que os sites e aplicativos fazem após você inserir sua senha é passá-la pelo SHA256, sua senha vai ser mudada para uma sequência de letras e números.

 Após mudar a senha para este “código” aí, sim, o site armazena o código e não a senha que você digitou.

Certo, mas se o site não armazena a senha, como ele sabe se a senha está correta no momento do acesso?

Simples, quando colocamos a senha correta o site passa a senha pelo SHA256 novamente e verifica se a sequência de códigos gerada bate com a sequência que ele armazenou quando a senha foi criada.

Dessa forma consegue dar acesso à pessoa certa!

Se o banco de dados for invadido de alguma forma a senha digitada pelo usuário não estará lá, o que foi armazenado é apenas o código gerado pelo SHA256 que não pode ser decodificado.

Vamos agora entender um pouco do conceito disso tudo, por que 256? O que é bit?

Bit é a sigla para o termo Binary Digit, que significa dígito binário, trata-se da menor unidade de informação que pode ser armazenada ou transmitida.

SHA256 é, na verdade, 256 bits.

Geralmente as pessoas conhecem mais o termo Bytes do que bits, então, para facilitar, em termos de equivalência:

1 byte = 8 bits.

Trabalhando com SHA256 no Python:

Por exemplo, em um código Python vamos escrever  um texto e printar esse texto.

Fazendo dessa maneira o texto será printado em formato de string.

Como Funciona a Criptografia e SHA256
Print – Lira

O que precisamos, é fazer com que esse texto seja printado em formato de uma hash, ou seja, um código como o do SHA256.

Para isso vamos colocar um “b” antes de “Lira”, dessa forma o Python transforma esse texto em uma “bitstring”, ele irá printar o “b” e o texto entre aspas.

Observe:

Como Funciona a Criptografia e SHA256
“B” Lira

Certo, e o que este “b” significa?

A diferença é que ao invés de estar armazenando uma string, o Python armazenará uma string em formato de bytes.

Se mandarmos o código printar qual o tipo de informação que temos na variável “nome” ele vai printar que temos uma informação do tipo “bytes” armazenada na variável.

Também conseguimos transformar o texto em bytes de outra forma no Python, podemos usar o “.encode()”, ele vai codificar o texto do mesmo modo que o “b” teria feito.

Como Funciona a Criptografia e SHA256
Encode.

Agora que esta parte está clara, vamos entender como funciona a Criptografia e SHA256 construindo um exemplo dentro do Python.

Em primeiro lugar dentro do Python temos uma série de pacotes e ferramentas prontas que aceleram o processo de construção de um código.

Nós não precisamos construir toda a lógica do SHA256 do zero, essa ferramenta já existe dentro de uma biblioteca do Python.

Nós só vamos precisar importá-la, para isso vamos escrever dentro do código o nome da biblioteca “hashlib” e importar o SHA256, como na imagem abaixo:

Import.
Import.

Você pode estar se perguntando:

Só existe o SHA256 para usar quando queremos tornar um acesso seguro?

Não, existem outros, o 512, por exemplo, porém geralmente se utiliza o SHA256 porque é seguro o suficiente, hoje ainda não se consegue quebrar este código.

Agora que já importamos a biblioteca, para que ela funcione todas as informações que vamos colocar dentro do código tem que estar em formato de bytes.

Por isso nós mostramos como fazer essa modificação de string para bytes anteriormente.

Vamos construir juntos um exemplo prático em Python!

Começaremos criando uma senha que será “123456”, depois, vamos fazer o mesmo processo da página do SHA256.

Passo a passo:

Crie a variável “hash_senha” e aplique o SHA256 -> passe entre aspas a senha no formato de bytes, ou seja, usando o “.encode()”, feito isso é só printar:

Como Funciona a Criptografia e SHA256
Hash_senha.

Como resultado o Python está mostrando que temos ali um objeto que é a nossa hash, armazenado.

Como podemos ver o valor dessa hash?

Para fazer isso temos que rodar o “.digest()” assim o Python entende que deve mostrar o texto por trás da hash.

Digest.
Digest.

Por que este texto está diferente do texto gerado pelo site do SHA256?

Se compararmos esse texto com o texto gerado no site do SHA256 com a mesma senha, vamos ver que são textos diferentes.

Por quê?

É simples, o texto do Python está sendo exibido no formato de bytes, se quisermos que ele venha no formato de texto com letras hexadecimais como no site do SHA256 ao invés de usar o “.digest()” podemos usar o “.hexdigest()” que vai mostrar o código com letras e números do nosso alfabeto.

Dessa forma vamos conseguir ver que o código gerado no Python é idêntico ao gerado no site.

Valor hexadecimal:

Python e SHA256 - Comparação.
Python e SHA256 – Comparação.

Valor em Bytes:

Valor em bytes.
Valor em bytes.

Podemos também ver o tamanho do texto gerado em bytes usando “len” que tem a função de medir o tamanho do código ou texto.

Neste caso o tamanho da hash é 32.

Len.
Len.

1 byte = 8 bits

32 x 8 = 256.

Por isso mostramos aquela conta no início, o processo de SHA256 vai gerar uma hash que sempre vai medir 256 bits, ou seja, 32 bytes.

Alguns sites preferem armazenar o código em hexadecimal outros em bytes, isso é uma escolha, porém bytes costuma ser o padrão.

Criando a verificação!

Quando vamos criar uma verificação de senha o site irá fazer um “input”, ou seja, vai pedir para o usuário digitar a senha.

Após isso o site vai armazenar a senha em uma hash no formato de bytes.

Valor armazenado.
Valor armazenado.

Quando o usuário for fazer o login novamente, o site vai:

Pedir o login do usuário com um “input()”, o usuário insere a senha e o site a transforma novamente em uma hash. 

Por fim ele compara o resultado gerado agora com a hash que já havia sido armazenada no site no momento de criação da senha.

Fazendo esta comparação ele pode retornar como senha incorreta ou acesso bem-sucedido sem ter que armazenar no banco de dados as senhas dos usuários.

Esse modelo só permite a comparação dos códigos gerados, não permite que o site armazene a senha.

Gostou de entender como o SHA256 funciona!

Essa é a forma mais segura hoje de proteger suas senhas e garantir segurança para os usuários.

Se quiser saber mais sobre este tema clique no link:

Como Minerar Bitcoin com Python – Código para Mineração

Conclusão – Criptografia e SHA256

Nesta aula explicamos como nossas senhas são criptografadas pelo SHA256.

Mostramos também qual o significado de 256 e alguns conceitos técnicos sobre o tema.

Por meio de explicações e exemplos criamos um processo de login que mostra como esse método é seguro e como ele pode ser usado dendro do Python.

Espero que tenham gostado! Até a próxima,

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?

Quer sair do zero no Python e virar uma referência na sua empresa? Inscreva-se agora mesmo no Python Impressionador