Salta el contingut
 

Hashing

Autor: Joan Puigcerver Ib谩帽ez

Correu electr貌nic: 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

Comentaris