This content originally appeared on DEV Community and was authored by João Vitor
Em algum momento da sua trajetória como programador, conceitos como Encoding, Hashing e Criptografia certamente já cruzaram o seu caminho. À primeira vista, é comum pensar que todos significam a mesma coisa: métodos de ocultar ou proteger informações. Mas será que é realmente isso?
Encoding
Encoding, ou codificação, é o processo de transformar caracteres (letras, números e símbolos) em um formato específico, otimizado para transmissão e armazenamento de dados.
Por exemplo, se você pesquisar no Google por "O que é codificação?" e observar a URL, verá algo assim:
https://www.google.com/search?q=O+que+%C3%A9+codifica%C3%A7%C3%A3o%3F
Note que a pesquisa foi ligeiramente modificada:
- Os espaços foram substituídos por
+ -
Letras acentuadas foram convertidas em códigos percentuais:
-
%C3%A9→é -
%C3%A7→ç -
%C3%A3→ã
-
O ponto de interrogação
?virou%3F
Por que isso acontece? A URL aceita apenas um conjunto limitado de caracteres. Qualquer caractere fora desse intervalo é convertido para uma forma segura, conhecida como percent-encoding. É por isso que um simples ã se transforma em %C3%A3.
O texto "Hello World", poderia ser codificada em muitos outros formatos, por exemplo:
- Binário
01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100
- Hexadecimal
48 65 6C 6C 6F 20 57 6F 72 6C 64
- Base64
SGVsbG8gV29ybGQ=
A grande questão é que encoding não é um método de segurança de dados, pois é totalmente reversível. Qualquer pessoa que conheça binário, hexadecimal ou Base64 consegue converter a mensagem de volta à sua forma original.
Para falar sobre a proteção de dados, vamos falar sobre
Hashing
Quando você cria uma conta em qualquer site, aplicativo ou serviço, a sua senha nunca é armazenada em texto puro. Se você olhar no banco de dados, verá uma string longa, aparentemente sem sentido, cheia de caracteres especiais, que não se parece em nada com a senha que você digitou ao criar a conta.
5420d1938buif7686dedsf9560bb5087d24676de5f83b7cb4c3b96bf46ec388b
A partir desse texto armazenado no banco de dados, é impossível recuperar a senha original, pois as funções de hashing são unidirecionais.
Funções de hashing aplicam uma sequência de cálculos matemáticos complexos para transformar o texto de entrada em um hash de saída.
O interessante é que a menor alteração nos dados de entrada gera um hash completamente diferente. Por exemplo, o hash de Hello é totalmente diferente do hash de hello (com “h” minúsculo).
E da mesma forma, a mesma entrada, sempre gerará a mesma saída. Ou seja, se você chamar uma função hash para a string 'Hello' 20 vezes, as 20 saídas serão exatamente iguais.
Então, resumindo, as 3 caracteristicas principais do hashing são:
Irreversível: Hashing é unidirecional. Você não pode reverter um hash para recuperar a entrada original.
Determinístico: A mesma entrada sempre produz o mesmo hash.
Comprimento fixo: Independentemente do tamanho da sua senha, o hash terá um tamanho consistente. Todos os hashes gerados pelo mesmo algoritmo têm o mesmo comprimento.
Como as funções de hashing são Determinísticas, quando você faz o login, sua senha passa novamente pela função de hash e sua saída é comparada com o valor armazenado no banco de dados. Se o valor for igual, seu login é aprovado.
Mas e se precisássemos armazenar uma informação de forma segura, mas ainda assim permitir que algumas pessoas pudessem acessar o texto original? Para isso, temos o conceito de
Criptografia
A criptografia pode ser definida como "o processo de proteger informações ou dados usando modelos matemáticos para embaralhá-los de modo que apenas as partes que têm a chave para decifrar possam acessá-lo."
Imagine que você armazena em seu computador informações confidenciais sobre uma pesquisa capaz de mudar a forma como o mundo vê certas coisas. Na teoria, qualquer pessoa com acesso ao seu computador poderia ler, editar ou manipular esse documento, já que ele não teria nenhuma proteção.
É aí que a criptografia entra. Ela oferece um método para embaralhar todo o conteúdo do documento, tornando-o ilegível para quem não possui a chave. Apenas quem tiver a chave correta consegue visualizar o texto original.
Um dos primeiros exemplos de criptografia simples é a Cifra de César, em homenagem ao imperador romano Júlio César, que a utilizava em sua correspondência particular. Esse método é um tipo de criptografia por substituição, em que cada letra é trocada por outra, seguindo um número fixo de posições no alfabeto. Para descriptografar a mensagem, o destinatário precisa conhecer a chave, por exemplo, deslocar o alfabeto quatro posições para a esquerda. Assim, cada “E” se transforma em “A” (ou conforme o shift definido) e assim por diante.
A criptografia moderna, por sua vez, é muito mais sofisticada, usando chaves geradas por computador, muitas vezes com centenas ou até milhares de caracteres, para garantir segurança robusta na descriptografia.
Existem diversos tipos de criptografia. Mas, as duas mais comuns são as que chamamos de criptografia simétrica e criptografia assimétrica.
Criptografia Simétrica
Esse tipo de criptografia é a mais "barata" de se produzir, gasta poucos recursos computacionais para produzir e para realizar a criptografia e descriptografia dos dados. Esse tipo de criptografia, é também conhecido como criptografia de chave compartilhada, porque é gerada somente uma chave e ela é a mesma tanto para criptografar e descriptografar os dados. Porém, o grande risco desse tipo de criptografia é que, se uma pessoa tem acesso a sua chave privada, ele pode visualizar todo e qualquer dado que foi criptografado com a mesma.
Criptografia Assimétrica
Já a criptografia assimétrica, também conhecida como criptografia de chave pública, resolve justamente o problema da distribuição segura de chaves. Nesse modelo, são geradas duas chaves matematicamente relacionadas: uma chave pública e uma chave privada. A chave pública pode ser compartilhada livremente com qualquer pessoa, enquanto a chave privada deve ser mantida em sigilo absoluto pelo seu proprietário.
O funcionamento é engenhoso: o que é criptografado com a chave pública só pode ser descriptografado com a chave privada correspondente, e vice-versa. Na prática, isso significa que alguém pode usar sua chave pública para enviar uma mensagem criptografada que apenas você, detentor da chave privada, conseguirá ler. Esse mecanismo elimina a necessidade de compartilhar segredos antes da comunicação, um dos maiores desafios da criptografia simétrica.
Apesar de mais segura em termos de distribuição de chaves, a criptografia assimétrica tem suas desvantagens. Ela é computacionalmente muito mais cara que a simétrica, podendo ser até 1000 vezes mais lenta em alguns casos. Por isso, na prática, os sistemas modernos costumam combinar ambos os tipos: usam criptografia assimétrica para trocar com segurança uma chave simétrica, e então utilizam essa chave simétrica para criptografar a comunicação real, aproveitando o melhor dos dois mundos.
Qual Escolher?
A escolha entre criptografia simétrica e assimétrica depende do contexto de uso. Para criptografar grandes volumes de dados localmente, como backups ou arquivos pessoais, a criptografia simétrica é ideal pela sua eficiência. Já para comunicação entre partes que nunca se encontraram antes, como em transações HTTPS na internet, a criptografia assimétrica é essencial para estabelecer um canal seguro sem precisar compartilhar segredos previamente.
Conclusão
Ao longo deste artigo, exploramos três conceitos fundamentais que frequentemente são confundidos, mas que servem a propósitos completamente diferentes na computação moderna.
Encoding é sobre compatibilidade e transmissão — transformar dados em formatos adequados para diferentes sistemas, sem qualquer pretensão de segurança. Hashing é sobre integridade e autenticação — criar impressões digitais únicas e irreversíveis de dados, perfeitas para verificar senhas e garantir que informações não foram alteradas. Criptografia é sobre confidencialidade — proteger o conteúdo real dos dados, permitindo que apenas quem possui a chave correta possa acessá-los.
Cada uma dessas tecnologias desempenha um papel crucial na infraestrutura digital que usamos diariamente. Quando você navega na web, sua conexão HTTPS usa criptografia assimétrica para estabelecer uma conexão segura. Suas senhas são protegidas por hashing no banco de dados. E os dados que trafegam pela internet passam por diversos processos de encoding para garantir que cheguem intactos ao destino.
Como desenvolvedores e profissionais de tecnologia, compreender essas diferenças não é apenas uma questão de conhecimento técnico — é uma responsabilidade. Em um mundo cada vez mais digital, onde a privacidade e a segurança dos dados são constantemente ameaçadas, saber quando e como aplicar cada uma dessas técnicas pode fazer toda a diferença entre um sistema vulnerável e uma aplicação verdadeiramente segura.
Da próxima vez que você se deparar com termos como Base64, SHA-256 ou AES, você saberá exatamente o que está acontecendo por trás das cortinas e, mais importante, por que cada um deles é usado de uma forma específica. Esse conhecimento é o primeiro passo para construir sistemas mais seguros e confiáveis.
This content originally appeared on DEV Community and was authored by João Vitor
João Vitor | Sciencx (2025-11-04T23:40:12+00:00) Arquitetura da Proteção de Dados: Encoding, Hashing e Criptografia. Retrieved from https://www.scien.cx/2025/11/04/arquitetura-da-protecao-de-dados-encoding-hashing-e-criptografia/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.