Secure Hash Algorithm: Porovnání verzí

Smazaný obsah Přidaný obsah
→‎SHA-2: doplnění
Mbumba (diskuse | příspěvky)
Využití + příklad
Řádek 38:
 
V případě podpisu dokumentu, nemůže útočník jednoduše padělat podpis z již existujícího dokumentu. Útočník by měl vytvořit dva dokumenty, jeden neškodný a druhý škodlivý, a požádat držitele privátního klíče o podpis na neškodném dokumentu. Jsou zde praktické okolnosti, kdy je to možné použít.
 
== Využití funkce SHA-1 ==
 
Funkce SHA-1 je stále jednou z nejrozšířenějších funkcí pro hashování v různých programovacích jazycích. Využíváme jí například pro hashování hesel uložených v databázi, tak aby nebylo možné zjistit jaké původní heslo uživatel použil.
=== Jednoduchý příklad za využití [[HTML]] a jazyka [[PHP]] ===
 
==== Formulář pro přihlášení (formular.html) ====
 
<source lang="html4strict">
<html>
<head>
<title>Prihlaseni</title>
</head>
<body>
<form method="post" action="prihlaseni.php">
Jmeno: <input type="text" name="username" /> <br />
Heslo: <input type="password" name="password" /> <br />
<input type="submit" value="Prihlasit" />
</form>
</body>
</html>
</source>
 
==== Skript pro zpracovaní údajů (prihlaseni.php) ====
 
<source lang="php">
<?php
Define("USERNAME", "Admin"); //preddefinovane uzivatelske jmeno
Define("HASH", "7c4a8d09ca3762af61e59520943dc26494f8941b"); //preddefinovany SHA-1 hash
if(!empty($_POST["name"]) AND !empty($_POST["password"])) { //zjistime zda uzivatel zadal jmeno i heslo
$_POST["password"] = sha1($_POST["password"]); //aplikujeme funkci sha1( string $str [, bool $raw_output = false ] ) pro vytvoreni SHA-1 hashe
if($_POST["name"] == USERNAME AND $_POST["password"] == HASH) { //overime zda zadane jmeno je rovno preddefinovanemu a zda vytvoreny hash se rovna preddefinovanemu
echo "Obsah zabezpeceny jmenem a heslem.";
/*
Sem se dostane uzivatel se spravnymi pristupovymi udaji.
Muzeme zde nastavit napr. session a vytvorit tak nejakou zabezpecnou prihlasovaci sekci.
*/
}
else echo "Spatne uzivatelske jmeno nebo heslo!";
}
?>
</source>
Všimněte si, že nikde v kódu není uvedeno předdefinováné heslo, pouze jeho hash. V tomto příkladu je použito heslo: 123456.
 
== Reference ==