sha1 în PHP

Calculează amprenta SHA-1 a unui text: 40 de caractere hexazecimale. Nu mai este recomandată pentru securitate.

Sintaxă
sha1(string $string, bool $binary = false): string

Ce face sha1

sha1 funcționează ca md5, dar produce o amprentă mai lungă, de 40 de caractere. Git o folosește pentru a identifica fiecare commit.

Din 2017 s-au construit în practică două documente diferite cu aceeași amprentă SHA-1, așa că nu o mai folosi pentru semnături sau parole. Pentru amprente sigure folosește hash("sha256", ...). sha1_file($fisier) calculează amprenta unui fișier.

Parametri

Parametru Descriere
$string Textul pentru care se calculează amprenta.
$binary Opțional. true returnează 20 de octeți binari.

Ce returnează

Amprenta SHA-1, ca text de 40 de caractere hexazecimale.

Exemple

Exemplul 1: Amprenta unui text

<?php
$amprenta = sha1("parola123");

echo $amprenta . "\n";
echo strlen($amprenta) . " caractere";

Rezultat

77862b117c20a39a99f3378e642ea59193c16dab
40 caractere

Exemplul 2: ETag pentru un fișier

Amprenta fișierului se schimbă doar când se schimbă conținutul. Browserul o poate folosi ca să nu descarce din nou un fișier neschimbat.

<?php
file_put_contents("stil.css", "body { color: #222; }");

echo 'ETag: "' . sha1_file("stil.css") . '"';

Rezultat

ETag: "5571411f954d5fb565b43b3d32b51045677836b4"

Greșeli frecvente

  • Folosești sha1 pentru parole. La fel ca MD5, este prea rapid și ușor de spart prin încercări. Folosește password_hash.

Comenzi înrudite

  • md5: Calculează amprenta MD5 a unui text: 32 de caractere hexazecimale. Bună pentru sume de control, nu pentru parole.
  • hash: Calculează amprenta unui text cu algoritmul ales: sha256, sha512, sha3-256, xxh3 și multe altele.
  • hash_hmac / hash_equals: Calculează o semnătură HMAC: o amprentă care depinde și de o cheie secretă. Dovedește că datele nu au fost modificate.