Ceturtais uzdevums
Praktiskā darba ceturtais uzdevums veltīts jaucējfunkciju vienvirziena un pretkolīziju īpašību izpētei. Citiem vārdiem – tā ietvaros tiek pārbaudīts un pierādīts tas, ka no rezultātā iegūtās hash funkcijas vērtības nav iespējams vienkārši uzzināt to, kādi bijuši sākotnēji dati, vismaz ne 100%
droši, jo, piemēram, ar brute-force uzbrukuma metodi var atrast bitu virknes ar identisku hash vērtību, taču tas pilnībā nepierāda to, ka sākotnējie dati/biti bijuši tieši tādi, jo pie milzīgiem
informācijas daudzumiem pastāv jaucējfunkciju kolīziju iespējamība. Turpretim pretkolīziju īpašība
parāda to, ka lai gan teorētiski jebkurai hash funkcijai ir iespējama vērtību kolīzija, tas ir, divas pavisam atšķirīgas sākotnējās vērtības ar identisku jaucējfunkcijas vērtību, taču praktiski ir ļoti grūti un resursu ietilpīgi atrast šādas līdzīgās vai sākotnējās vērtības, zinot tikai pašu hash virkni.
Uzdevuma praktiskās daļas ietvaros tiek izstrādāta Python 3 programmēšanas valodā rakstīta komandrindas (CLI) programma, skripts, kas nodrošina MD5 hash funkciju kolīziju meklēšanu
lietotāja ievadītajai teksta virknei. Lai gan sākotnēji autors bija plānojis arī šo lietojumu nodrošināt ar lietotāja grafisko saskarni (datne Lacis-Kolizijas.glade), taču, pamatojoties ar problēmām, kas radās ar apstrādes procesā iegūto datu sinhronu attēlošanu GUI (threading), rezultātā tiek izstrādāts tikai komandrindas variants, kas aplūkojams 8. attēlā. Jāņem vērā, ka GUI
variants arī veiksmīgas izstrādes gadījumā būtu pietiekami resursu ietilpīgs un ievērojami lēnāks nekā pašreiz iegūtais CLI risinājums.…