Zoek- en sorteeralgoritmen & Hashing Merel van Schieveen en Femke Berendsen
Inhoud Zoek- en sorteeralgoritmen Hashfuncties Wat zijn hashfuncties? Eigenschappen MD5 Verjaardagsprobleem
Zoekalgoritmen Lineair zoeken Binair zoeken Data niet gesorteerd Alle data langslopen O(n) Binair zoeken Data gesorteerd Zoekruimte halveren O(log n)
Sorteeralgoritmen Insertion sort Merge sort Ieder element afzonderlijk in rij plaatsen O(n²) Merge sort Halveren van rijtjes en deze later weer samenvoegen O(n log n)
Hashing
Herbruikbaar
Onomkeerbaar Caesar-rotatie
Lengte
Geen Collisions
Voorwaarden Hash functie Herbruikbaar; als x = y, dan H(x) = H(y) Onomkeerbaar; Alle hashes dezelfde lengte; Geen collisions; als H(x) = H(y), dan x = y
MD5 (128 bit) hexadecimaal talstelsel
MD5 (128 bit) van hexadecimaal naar binair talstelsel
MD5 (128 bit) MD5 heeft dus een output van: 128 𝑏𝑖𝑡 4 =32 tekens uit het hexadecimaal stelsel
Collisions?
Het verjaardagsprobleem Een groep mensen, hoe groot is de kans dat twee mensen op dezelfde dag jarig zijn? P(n,k)=P(minstens één duplicaat per k items, die elk een gehele waarde tussen 1 en n kunnen aannemen) Q(n,k) = P(geen duplicaten) = 1 – P(n,k) N = het aantal verschillende manieren dat we k waarden kunnen hebben zonder duplicaten
Het verjaardagsprobleem We willen k zodat P(365,k) > 0,5 Hierbij is k ≤ 365 N = 365 x 364 x ... x (365 – k + 1) = 365! 365−𝑘 ! Q(365,k) = N / 365k
Het verjaardagsprobleem Q(365,k) = 365! 365−𝑘 ! 365 𝑘 P(365,k) = 1 – Q(365,k) = 1 – 365! 365−𝑘 ! 365 𝑘 Als k = 23 dan is P(365,23) = 0,5073.
Algemener probleem P(n,k) = 1 – 𝑛! 𝑛−𝑘 ! 𝑛 𝑘 > 1 – 𝑒 −𝑘(𝑘−1)/2𝑛 Als P(n,k) > 0,5 dan moet k≈ 𝑛 Bij het verjaardagsprobleem: n = 365 geeft 𝑘=1,18 365 ≈22,54
Collision Geval MD5 𝑛= 2 128 𝑘= 2 128 = 2 64 =18.446.744.073.709.551.616 In 1994: Oorschot en Wiener In 24 dagen een collision gevonden
Vragen?