BCrypt Delphi

vložil Radek Červinka 2. června 2018 23:45

BCrypt je populární algoritmus pro hashování hesel. Mezi jeho výhody patří kvalitní dokumentace, standardizovaný, stejný napříč platformami a jazyky (třeba PHP).

Velmi kvalitní implementace pro Delphi je github.com/JackTrapper/bcrypt-for-delphi.

Co myslím kvalitní implementací? Jeden soubor, self testy, bez externích závislostí, dobře dokumentovaný a udržovaný.

Jak vytvoříme hash hesla?

hash := TBCrypt.HashPassword('MrakoplašMáVelkýKlobouk', 14); //specifikován cost factor 14

Cost faktor je náročnost pro odhalení hashe. Pokud parametr vynecháme, je doplněn výchozí pro aktuální dobu (v čase se pomalu zvyšuje jak se zlepšuje výkon počítačů).

Jak heslo validujeme?

uses
  BCrypt;
var
  bRehash: boolean;
begin
  Result := TBCrypt.CheckPassword(sPwd, sHash, bRehash);

Kde bRehash je vrácen když je třeba heslo aktualizovat (např. cost faktor - časová náročnost - přestala vyhovovat).

Dle konvence je hash ve formátu

$2a$10$6kLz4E/xi3awoSBUc.ERPO7YJZ8ZDc9UwEkiTskiaU/i.BUmbh8pu

Kde $2a je verze, $10 je cost faktor, 22 base64 encoded znaků sůl a zbytek.

Zajímavé povídání o historii a verzích je dostupné přímo ve zdrojáku nebo na wikipedii.

Pokud je tu nějaký odborník na šifrování (a já vím, že jsou), klidně mne doplňte prosím.

Tagy: ,

Komponenty

Komentování ukončeno

Naše nabídka

MVP
Ing. Radek Červinka - Embarcadero MVP
profil na linkedin, Twitter:@delphicz

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj speciálního software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy).

love Delphi

O Delphi.cz

Delphi je moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64, Mac OSX, Linux a na iPhone a Android.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Poslední komentáře

Comment RSS

Dle měsíců