Hvad er en Hash-regnemaskine?
En hash-regnemaskine kan være flere ting, men henviser i en meget bred forstand til et program eller en funktion, der accepterer en eller anden type input og derefter kører denne input gennem en algoritme for at skabe en outputværdi, såsom et stort antal eller en blok af symboler. Udtrykket bruges ofte i datatransmission til at henvise til et program, der opretter en type nøgle med en algoritme, så enhver, der modtager de transmitterede data, kan bruge den samme algoritme til at få den samme nøgle for at se, om dataene ankom intakte og umodificerede. I computerprogrammering kan udtrykket "hash-regnemaskine" bruges til at indikere en hash-funktion, der omdanner en type data til en hash-nøgle, der derefter behandles af en anden algoritme for at oprette et indeks til en matrix, hvor informationen kan gemmes. Selvom begge koncepter i lommeregneren er ens, er resultaterne meget forskellige og er normalt ikke udskiftelige. En fælles egenskab ved en hash-regnemaskine, uanset dens anvendelse, er, at den genererede hash-værdi altid vil være den samme for et givet stykke data, uanset hvor eller når programmet køres.
I sin kerne er en hash-regnemaskine blot et program eller en funktion, der opretter en hash fra nogle data. En hash er bare et ord for en værdi og kan være alt fra et tal til en streng med hundreder af alfanumeriske tegn, afhængigt af hvordan det bruges. De data, der føjes til en hash-regnemaskine for at oprette en hash, kan også være næsten alt. Når det bruges til fejlkontrol i datatransmission, er kilden til en hashværdi normalt et komplet dokument eller datafil, såsom en e-mail eller en billedfil. Da hashværdien bruges til at bestemme, hvor dataposter er gemt i en hash-tabel, er inputværdien normalt en del af en datarekord, der er unik, såsom efternavn på en person, et telefonnummer eller en kontonummer.
I tilfælde af datatransmission bruger en hash-beregner en hvilken som helst af hundreder af forskellige matematiske algoritmer til at skabe den unikke hashværdi for den information, der transmitteres. Dette kan være noget så simpelt som at tilføje alle værdier for alle bytes i en fil, i hvilket tilfælde hashværdien er summen. Det kan også være meget mere komplekst, hvor man tæller blokke med bits eller overflødigt behandler forskellige sekvenser af tal. Et af de vigtigste aspekter af enhver hash-algoritme er imidlertid, at den resulterende hash-værdi altid skal være den samme, hvis de samme data bruges som input. Dette koncept betyder, at hvis en fil transmitteres med sin egen beregnede hashværdi, kan modtageren af dataene bruge en hash-regnemaskine med den samme algoritme til at bestemme, om hashværdierne for dataene stemmer overens, og verificere, at dataene blev modtaget intakte og uden fejl eller ændringer.
Ved programmering bruges ofte udtrykket "hash-beregner" til at beskrive en funktion, der konverterer et stykke af nulpunkt til en hashværdi. I modsætning til datatransmission bruges antallet, der er genereret af lommeregneren i dette tilfælde, ikke nødvendigvis til verifikation, men til at beregne et indeks til en hashtabel, hvor informationen gemmes. En mellemliggende hashværdi beregnes for at muliggøre, at et større antal dataposter forudsigeligt kan placeres i en mindre hashtabel, hvor nogle poster genererer de samme værdier under visse omstændigheder. Både den algoritme, der bruges til at beregne en hashværdi, og de data, der bruges som input, er ret vilkårlige for en hash-tabel og normalt applikationsspecifikke.