sha1

funkcja

Oblicza skrót SHA-1 ciągu znaków (40 znaków hex). Służy do sum kontrolnych — nigdy do haseł i nie do podpisów cyfrowych.

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

sha1 oblicza 160-bitowy skrót SHA-1 i zwraca go jako 40-znakowy string szesnastkowy. Jeśli $binary = true, zwraca 20-bajtowy ciąg binarny.

⚠️ NIGDY nie używaj sha1() do haseł. SHA-1 — podobnie jak MD5 — jest zaprojektowany jako szybki algorytm skrótu. Szybkość to tutaj wada: atakujący może sprawdzić miliardy wariantów haseł na sekundę. SHA-1 ma dodatkowo znane kolizje i nie jest rekomendowany przez NIST od 2011 roku. Do haseł zawsze używaj password_hash().

Do sum kontrolnych i weryfikacji integralności danych lepiej użyj hash('sha256', ...) lub silniejszego algorytmu. SHA-1 bywa spotykany w starszych systemach i protokołach (np. Git), ale w nowym kodzie preferuj SHA-256.

<?php
declare(strict_types=1);

// Suma kontrolna (poprawne użycie — choć sha256 lepszy):
$tresc = 'przykładowa zawartość pliku';
$skrot = sha1($tresc);
echo $skrot; // 40-znakowy hex, deterministyczny

// Sprawdź hash pobranego pakietu:
$oczekiwany = '47425e4490d1548713efea3b8a6f5d778e4b1766'; // sha1('php')
$obliczony  = sha1(file_get_contents('pakiet.tar.gz'));
if (!hash_equals($oczekiwany, $obliczony)) {
    throw new \RuntimeException('Plik nie pasuje do sumy kontrolnej!');
}

// ❌ NIGDY tak nie rób:
// $hash = sha1($hasloUzytkownika); // podatne na ataki!
// Zamiast tego: password_hash($haslo, PASSWORD_DEFAULT)
📘 Naucz się w lekcji →