Hlavní navigace

Názor ke zprávičce Velmi rychlá kryptografická hašovací funkce BLAKE3 vyšla ve verzi 1.0.0 od dw - Je deterministická. Po dobu běhu aplikace bude pro...

  • 30. 7. 2021 4:57

    dw

    Je deterministická. Po dobu běhu aplikace bude pro stejný objekt vracet stále stejnou hodnotu. Když si nějaký enum uložíte do EnumSetu, vždycky ho tam později najdete. Kdyby ta funkce nebyla deterministická, mohlo by se stát, že by se tam enum nenašel, i kdyby tam byl.

    Nie je, pretozeto nie je hash ale referencia. Hash by to bol vtedy ak by bolo obtiazne dostat povodnu hodnotu.
    Najde, pozrite si ako je implementovana napr enum.valueOf(str), prechadza tie polozky cez for...

    Ano, tak jsme se k tomu dostali. Jako příklad hashovací funkce jsem uváděl funkci, jejíž výstup závisí na referenci na vstupní objekt. A pak jsem javovské hashCode() uváděl jako reálný příklad takové implementace.

    Tak si prejdite zdrojaky ako je Object.hashCode implementovany, je to priamo referencia, nie jej hash.

    Po dealokovani objektov moze mat novo alokovany objekt rovnake hashCode ako niektory z dealokovanych i ked ide o uplne iny objekt.
    Jinými slovy, může vzniknout kolize. Jaké překvapení.

    Asi vam nie je celkom jasne co je kolizia. Ak ma ten objekt rovnaku referenciu, tak to kolizia nie je. To je to iste ako by ste oznacil za kolizu hash dvoch rovnakych retazcov.

    Rovnako ako pre vami spominanu fyzicku osobu bude hash deterministicky vtedy ak sa bude pocitat napr z rodneho cisla, nie z gps suradnic.
    Když se bude hashCode počítat z rodného čísla, při změně rodného čísla osoby se vypočítá jiný hash, i když se osoba nezměnila. Vy tu funkci sice nazýváte deterministickou, ovšem ta funkce nesplňuje podmínky pro hashCode v Javě a není to hashovací funkce v tom všeobecně uznávaném významu (který je např. na Wikipedii), protože není zaručeno, že pro stejný vstup (tedy stejnou osobu) vrátí vždy stejný výstup.

    Ktory iny osobny udaj je u osoby nemenny. V pripade rc dochadza k zmene najzriedkavejsie. Ale vam skor evidentne unikla pointa, hodnota - rc versus referencia - poloha.