Salta el contingut
 

Hashing

Joan Puigcerver Ibáñez

j.puigcerveribanez@edu.gva.es

Llicència: CC BY-NC-SA 4.0

(Reconeixement - NoComercial - CompartirIgual) 🅭

Hashing

El hashing és un procés que transforma una entrada (o fitxer) en una sèrie de caràcters de longitud fixa, independentment de la mida de l'entrada. Aquesta sèrie de caràcters es coneix com a hash.

Les característiques principals del hashing són:

  • Únic: Dos fitxers diferents haurien de produir hashes diferents.
  • Determinista: La mateixa entrada sempre produirà el mateix hash.
  • Ràpid: Calcular el hash d'una entrada és un procés ràpid.
  • No recuperació: No es pot recuperar la informació original a partir del hash.

Els algorismes de hashing més comuns són:

  • MD5 (Message Digest Algorithm 5): Funció de hash de 128 bits. Actualment considerada insegura.
  • SHA-1 (Secure Hash Algorithm 1): Funció de hash de 160 bits. Millor que MD5, però també considerada insegura.
  • SHA-256 (Secure Hash Algorithm 2): Funció de hash de 256 bits. Actualment considerada segura.

Usos

Els algorismes de hashing són utilitzats en molts àmbits de la informàtica:

  • Integritat: Per verificar que un fitxer no ha estat modificat.
  • Contrasenyes: Per emmagatzemar contrasenyes de forma segura.
  • Cerca ràpida: Per indexar dades i agilitzar la cerca.
  • Criptografia: Per xifrar dades de forma segura.
  • Signatura digital: Per verificar l'autenticitat d'un fitxer.
  • Estructures de dades: Per implementar taules de dispersió (hash tables).

Integritat de fitxers

Càlcul del hash

Per calcular el hash d'un fitxer, podem utilitzar diferents algorismes.

md5sum fitxer.txt

Exemple: MD5

jpuigcerver@fp:~/hashing $ echo "Text de prova" > text.txt
jpuigcerver@fp:~/hashing $ md5sum text.txt
124efb7b5b02e68ea3b4f9f4227ba567  text.txt
sha1sum fitxer.txt

Exemple: SHA-1

jpuigcerver@fp:~/hashing $ echo "Text de prova" > text.txt
jpuigcerver@fp:~/hashing $ sha1sum text.txt
d4ac1a00e994dbf34c0e7cf520e7d8f75f52fb45  text.txt
sha256sum fitxer.txt

Exemple: SHA-256

jpuigcerver@fp:~/hashing $ echo "Text de prova" > text.txt
jpuigcerver@fp:~/hashing $ sha256sum text.txt
cd49fb43fcbf6b37bb404bb44e78c7ce50737154a0275a1cf14b74d6b67412f9  text.txt

Verificació del hash

Per verificar la integritat d'un fitxer, comparem el hash original amb el calculat.

md5sum -c fitxer.md5

Exemple: MD5

jpuigcerver@fp:~/hashing $ echo "Text de prova" > text.txt
jpuigcerver@fp:~/hashing $ md5sum text.txt > text.md5
jpuigcerver@fp:~/hashing $ md5sum -c text.md5
text.txt: OK
sha1sum -c fitxer.sha1

Exemple: SHA-1

jpuigcerver@fp:~/hashing $ echo "Text de prova" > text.txt
jpuigcerver@fp:~/hashing $ sha1sum text.txt > text.sha1
jpuigcerver@fp:~/hashing $ sha1sum -c text.sha1
text.txt: OK
sha256sum -c fitxer.sha256

Exemple: SHA-256

jpuigcerver@fp:~/hashing $ echo "Text de prova" > text.txt
jpuigcerver@fp:~/hashing $ sha256sum text.txt > text.sha256
jpuigcerver@fp:~/hashing $ sha256sum -c text.sha256
text.txt: OK

També podem utilitzar l'eina diff per comparar si un hash és igual a un altre.

diff fitxer1.md5 fitxer2.md5

En cas que aquesta ordre no mostre res, vol dir que els fitxers són iguals.

Bibliografia

📌 Aquest document pot quedar desactualitzat després d’imprimir-lo. Pots consultar la versió més recent a la pàgina web.
🌿 Abans d’imprimir aquest document, considera si és realment necessari. Redueix el consum de paper i ajuda a protegir el nostre entorn.