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 olyanm'
-t találni, hogyh(m) = h(m')
(leképezés ütközés-ellenállósága, image collision resistance) - két olyan tetszőleges
m
-et ésm'
-t találni, hogyh(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.