Delphi.cz

Český portál Delphi

BCrypt Delphi

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.

Datum: 2018-06-02 22:45:00 Tagy: praxe, open source

Komponenty