Hashfüggvény

A HupWiki-ből...

Olyan függvény, ami tetszőleges hosszúságú bemenetet egy véges hosszúságú (tipikusan pl. 128 bitnyi) kimenetre képez le. Emiatt a leképezés nyilván nem egy-egy értelmű lesz (azaz egy hash-értéket sokféle lehetséges bemenet előállíthatott), viszont az ilyen függvényeket úgy választják meg, hogy nagyon nehéz (gyakorlatilag lehetetlen) legyen:

  • adott h(m) hash-értékhez egy megfelelő m forrás-bemenetet találni (neminvertálhatóság, noninvertability)
  • adott m-hez olyan m'-t találni, hogy h(m) = h(m') (leképezés ütközés-ellenállósága, image collision resistance)
  • két olyan tetszőleges m-et és m'-t találni, hogy h(m) = h(m') (ütközés-ellenállóság, collision resistance)
  • illetve a bemenet bármely bitjének megváltozása a kimenet bitjeinek mindig átlagosan felét változtassa meg (lavinatulajdonság, avalanche property)

Az ilyen módon kapott értékeket sok esetben lehet a hosszú tartalom "rövid neveként" kezelni. Digitális aláírásnál például a tartalom hash-ét szokták a küldő titkos kulcsával kódolni, így letagadhatatlanul bizonyítva az egyediséget.

A fenti tulajdonságok miatt a hashfüggvények az egyszerű ellenőrzőösszegek "felnőtt" változatának tekinthetők.

Ismertebb hashfüggvények

Generálás és ellenőrzés

Egyik eszköze a cfv, kezel CRC32 (SFV), MD5, .torrent, stb. eljárásokat.

Használat:

A könyvtár tartalmáról SFV ellenőrző értékek generálása:

cfv -rrC *

Ugyanez MD5tel:

cfv -rrC -t md5 *

Ellenőrzés (ha talál a könyvtárban hashlistát, akkor teszteli):

cfv

A program alaposabb üzeneteket küld a -v kapcsoló hatására.