Diskuze: AES‑256 v PHP
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 9 zpráv z 9.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
http://php.net/…-encrypt.php#…
ujisti se, že ji máš viz.
http://php.net/…-methods.php#…
Je moc nebezpečné požívat přímo šifrovací funkce, pokud člověk
neví, co přesně dělá. To potom vede třeba k věcem jako konstantní IV,
nepočítání MAC, padding oracle...
Lepší je najít nějakou knihovnu, co to všechno dělá sama. Našel jsem
např. https://github.com/…s-encryption , vypadá docela ok, ale
zdá se poměrně stará :/
Nebo stačí jen sha-256?
SHA a AES jsou naprosto rozdílné věci, takže může, ale rozhodně ne na šifrování. Dokonce i ta čísla 256 mají úplně jiný význam.
AES je symetrická šifra. To znamená, že dostane
To všechno se zchroustá a vypadne z toho zašifrovaný text. Pokud použiješ dešifrovací funkci se stejným vstupem, dostaneš zpět plaintext.
SHA
Jsou hashovancí funkce z rodiny SHA. Hashovací funkce vezme jeden vstup a
udělá z něj fixně daný výstup - hash (otisk). Sebemenší změna ve vstupu
se projeví úplně jiným hashem.
Důležitou vlastností hashovacích funkcí je, že se od hashe nelze dostat
zpět k původnímu vstupu.
To je užitečné např. pro kontrolování, že máš stejný soubor, co si
očekával, že se stáhne - u sebe spočítáš hash souboru a porovnáš s
hashem na webu - a celý soubor se porovnal pomocí pár desítek znaků.
To to také používá u hesel, kde se neuloží heslo samotné, ale hash (plus
nějaká omáčka). POZOR, heslo jsou komplikovanější a je lepší používat
vestavěné funkce password_hash
a
password_verify
.
Počítám s tím, že si projde manuál k tomu, proto jsem poslal linky přímo na to, co žádal.
Šifrování:
$encrypted = openssl_encrypt($text, "AES-256-ECB", $key);
Dešifrování:
$text = openssl_decrypt($encrypted, "AES-256-ECB", $key);
Na šifrování delších věcí bych ECB opravdu nedoporučoval, protože:
Samotná symetrická se ti (podle předpokladu) bezpečně postará o data velikosti jednoho bloku. Na delší data potřebuješ ji pustit v určitém módu (CBC, CTR, ...), případně s použitím rozumného zarovnání (padding).
Moc se omluvám, to mělo být +1... #dotykovydisplay
Zobrazeno 9 zpráv z 9.