Hashing
Quando precisamos que algo seja transformado em um valor de tamanho fixo e que seja impossível retornar para seu conteúdo original, utilizamos hashing
.
Os algs que costumamos ver são MD5
, SHA256
e BCRYPT
. Cada um com seu objetivo específico.
A característica principal do hashing é que ele gera um valor completamente diferente se um único byte mudar, veja:
Os casos mais comuns que temos aqui são armazenamento de senhas
e digest para verificação de integridade
.
Explicando cada um deles:
Armazenamento de Senhas
Ao armazenar senhas no banco de dados, devemos utilizar algorítmos fortes de hashing.
O indicado é utilizar BCRYPT
ou ARGON2
.
Estes algs tem uma característica importante: você não precisa armazenar separadamente o SALT
.
Digest para verificação de integridade
Quando baixamos algum software ou instalamos algum pacote, você já deve ter visto que eles tem um checksum
, não?
Como exemplo, vamos pegar as instruções de instalação do Passbolt:
Agora presta atenção em duas partes:
O que está sendo feito aqui é gerar um hash usando sha256 do conteúdo do arquivo docker-compose-ce.yaml
e comparando com um valor fixo.
Mas qual o motivo disso ter sido feito?
Vou te responder isso com outra pergunta: como saber se o software que você está baixando ou executando é oficial e não uma versão maliciosa alterada?
O fabricante fornecerá o software e também o hash, assim você poderá garantir que é o mesmo ao baixar.
Last updated