Vraag Is er een tutorial over zachte hashfuncties?


Het is beschamend dat het kiezen van een hash-functie (bijvoorbeeld hashing-strings, of sets van gehele getallen, enz.) Voor mij nog steeds magisch is: neem hier wat priemgetallen, magische constanten daar, doe een beetje verschuiven, modulo iets en doe het.

Is er een leuke, vriendelijke en toegankelijke zelfstudie over het maken van hashfuncties?


24
2017-09-27 13:46


oorsprong


antwoorden:


Het is merkwaardig hoe moeilijk het is om een ​​eenvoudige verklaring te vinden voor hash-algoritmen. Misschien is het onderwerp zo moeilijk dat het niet eenvoudig is om een ​​eenvoudige tutorial te maken. Ik zocht er zelf een en kwam hetzelfde probleem tegen.

Maar je kunt deze pagina proberen. Wat wel cool is, is dat nadat je de pagina hebt gelezen, onderaan een tekstvak staat. Als u tekst aan dat vak toevoegt en het formulier verzendt, is het resultaat een stapsgewijze weergave van hoe het de invoertekst hashes.

http://www.metamorphosite.com/one-way-hash-encryption-sha1-data-software

Succes. Als je iets beters vindt, zou het erg handig zijn als je het hier gepost hebt.


16
2017-12-05 20:41



Je kunt een degelijke, gemakkelijke hash-tutorial vinden op Hash Table-zelfstudie (bespreekt ook hash-functies). Merk op dat als u een zoekopdracht op internet uitvoert, u veel goede informatie kunt vinden.

Wikipedia heeft wat basisinformatie over beide Hash Tables en Hash-functies.

BEWERK

Een soortgelijke vraag werd eerder gesteld: Welke hashfunctie moet ik kiezen. De vraag en antwoorden zijn uitstekend.


3
2017-09-27 13:53



Ik vond deze link een beetje nuttig. Het geeft een basisoverzicht, maar schiet tekort bij een grondig begrip van zaken als waarom prime, waarom bit shift enz.

http://www.i-programmer.info/babbages-bag/479-hashing.html

Markeer vanuit deze link een gedeelte met een overzicht

Wat zorgt voor een goede hash-functie De meeste goede hash-functies werken door de rest te berekenen na delen door de tabelgrootte N.

Dit geeft altijd een waarde tussen 0 en N-1, dus het is geschikt, maar als N een priemgetal is, is het ook uitstekend in het verspreiden van de gegevens rond de tafel. Natuurlijk, als je een tekstwaarde hebt die je wilt hashen, moet je deze eerst converteren naar een geschikte numerieke waarde en een eenvoudig schema zoals in het voorbeeld niet doen.

U moet voor elke mogelijke tekstwaarde een andere numerieke waarde produceren en het samenvoegen van de ASCII-codes van de eerste twee letters werkt duidelijk niet. Een betere methode is om elk van de ASCII-codes te wegen op de positie van de letter door te vermenigvuldigen met 1 voor het eerste teken, 10 voor het tweede, 100 voor het derde teken enzovoort. Voordat u ze optelt om een ​​enkele waarde te geven.

In het algemeen is het bouwen van een echt goede hashfunctie moeilijk en in de meeste gevallen moet je er een vinden die goede eigenschappen heeft en goed is getest.


1
2017-09-12 21:27