Encoding, Encryption and Hashing
Enconding, Encryption e Hashing são processos semelhantes, mas apresentão uma certa diferença entre si. Confundir esses conceitos é algo comum para quem está começando na área.
Encoding
É o processo de transformar um dado em outro formato para facilitar e ser utilizado em diferentes sistemas. O principal objetivo do encodar é para fazer que diversos sistemas entendam e que possa ser usado em qualquer processo externo. Em relação a segurança, ele não é usado para proteger informações, pois existem algoritmos específicos para isso.
URL Encoding: Método utilizado para codificar informações em uma URL.
Base64 Encoding: Uma codificação que transforma dados binários em textos legíveis usando caracteres ASCII.
ASCII: É uma codificação básica que usa 7 bits (ou 1 byte) para representar até 128 caracteres.
Encryption
Tecnica utilizada usando um algoritmo de criptografia, fazendo que somente pessoas autorizadas possam ter acesso a informação. Esse método é usado para enviar dados privados, por exemplo, um usuário e senha de alguma sistema.
Criptografia simétrica
É o algoritmo que usa a mesma chave para encriptar e decriptar o dado. Um examplo de algoritmo seria o AES, TwoFish, Blowfish
Criptografia assimétrica
É o método de criptografia que usa duas chaves diferentes, sendo uma pública e uma privada. Com a criação do par de chaves, uma pública e uma sendo privada, qualquer pessoa com a chave pública pode criptografar o dado. No entento, apenas quem tem a chave privada descriptografar o dado. Um dos sistemas mais comuns de criptografia assimétrica é o RSA.
Hashing
É um processo que transforma qualquer bloco de dados em uma sequência de caracteres fixos. Diferente do Encoding e da Encryption, o Hashing é uma via única. Você não “decripta” um hash.
Exemplos de algoritmos hash:
- MD5
- SHA-1
- Família SHA (Secure Hash Algorithm)
- Bcrypt
Referências:
https://auth0.com/blog/encoding-encryption-hashing/
https://www.geeksforgeeks.org/dsa/encryption-encoding-hashing/