Algoritmen en cryptografie - Eerst en vooral, voordat ik verder ga en opscheppen over mezelf en deze blog omzet in een saai eenzijdig gesprek, laten we eerst begrijpen wat algoritmen zijn en hoe ze gerelateerd zijn aan cryptografie.

Algoritmen en cryptografie

algoritmes

Voor degenen onder u die denken dat Algorithms alleen verband houdt met informatica, hebt u het mis. Algoritme is een methode of een formule om een ​​probleem op te lossen. En als ik probleem zeg, kan het elk type probleem zijn, of het nu wiskundige, wetenschappelijke formules zijn of zelfs computergebaseerd. Laat me je een simpele geven

Voorbeeld:

(A + b) 2 = a 2 + 2ab + b 2

Of het kan zijn als:

Opgebouwd bedrag = hoofdsom (1 + ROI * 100 * tijd)

Ja! Alles wat een formule is, kan als een algoritme worden opgevat. Een algoritme is een set regels voor het oplossen van een probleem dat, als het goed wordt uitgevoerd, elke keer een correct antwoord geeft. Algoritmen omvatten in het algemeen een reeks stappen steeds opnieuw, zoals in de leen- en draagalgoritmen en in de lange vermenigvuldigings- en delingsalgoritmen. Algoritmen zijn onder meer optellen, aftrekken, vermenigvuldigen en delen.

Maar voordat je begint te denken dat ik hier een soort wiskundecollege volg, wil ik je zeggen dat ik dat niet ben. Ik ben hier om te praten over algoritmen en cryptografie met betrekking tot informatica. Maar voordat ik daarmee verder ga, wil ik u enkele voorbeelden geven van eenvoudige algoritmen om mee te beginnen.

Deze voorbeelden zijn voor pure noobs die nog nooit in hun hele leven enige vorm van algoritme hebben gedaan. Dus als je denkt dat je slim genoeg bent, kun je doorgaan naar het volgende gedeelte van Cryptography waar ik opnieuw enkele basisprincipes zou introduceren voordat ik naar het volgende niveau ga.

Dus, hier zijn een paar voorbeelden van additie-algoritmen, waarmee u nu aan de slag kunt en een idee krijgt van hoe algoritmen zijn. Laten we beginnen met basiswiskunde:

Links naar rechts toevoeging algoritmen:

Begin links, voeg kolom voor kolom toe en pas het resultaat aan.

Voor sommige mensen wordt dit proces zo automatisch dat ze links beginnen en het antwoord kolom voor kolom schrijven, terwijl ze zich aanpassen zonder tussentijdse stappen te hoeven schrijven. Als gevraagd wordt om uit te leggen, zeggen ze zoiets als dit:

200 plus 400 is 600, maar (kijkend naar de volgende kolom) moet ik dat aanpassen, dus schrijf 7. Dan zijn 60 en 80 140, maar dat moet worden aangepast, dus schrijf 5. Nu zijn 8 en 3 11, niet meer te doen, schrijf 1. Deze techniek ontwikkelt zich gemakkelijk uit ervaringen met manipulatieven, zoals base-10 blokken en geld, en ruil- of ruilspellen, en is consistent met de links-naar-rechts patronen die zijn geleerd voor lezen en schrijven.

Nu kunnen sommige mensen helemaal gek worden als ze hierover lezen. Het is dus mogelijk dat je dit soort dingen op Google moet zetten om een ​​exact idee te krijgen van wat hier precies gebeurt.

geheimschrift

Cryptografie is een kunst om codes op een niet-menselijke leesbare manier te schrijven. Het is een methode voor het opslaan en verzenden van gegevens in een bepaalde vorm, zodat alleen degenen voor wie het is bedoeld, deze kunnen lezen en verwerken. Je kunt zeggen dat cryptografie een nauwe neef is van de disciplines cryptologie en cryptanalyse.

Cryptografie omvat technieken zoals microdots, het samenvoegen van woorden met afbeeldingen en andere manieren om informatie tijdens opslag of doorvoer te verbergen. In de computer-gecentreerde wereld van vandaag wordt cryptografie echter meestal geassocieerd met het door elkaar gooien van platte tekst (gewone tekst, ook wel cleartext genoemd) in cijfertekst (een proces dat codering wordt genoemd) en vervolgens weer terug (bekend als decodering). Individuen die dit veld oefenen staan ​​bekend als cryptografen.

Versleuteling wordt al vele duizenden jaren gebruikt. De volgende codes en cijfers kunnen worden geleerd en gebruikt om berichten handmatig te coderen en te decoderen:

A) Mono-alfabetische cijfers:

Mono-alfabetische codering gebruikt dezelfde vervanging voor het hele bericht. Als u bijvoorbeeld weet dat de letter A is gecodeerd als de letter K, geldt dit voor het hele bericht. Dit soort berichten kan worden gekraakt met behulp van frequentieanalyse, onderbouwde gissingen of vallen en opstaan.

1. Ceaser-cijfer

Een Caesar-codering is een van de eenvoudigste (en gemakkelijkste gekraakte) versleutelingsmethoden. Het is een vervangingscijfer waarbij elke letter van het geheime bericht wordt vervangen door een andere letter van het alfabet, wat een vast aantal posities verder in het alfabet is.

Omdat elke letter in het bericht een directe vertaling naar een andere letter heeft, kan frequentieanalyse worden gebruikt om het bericht te ontcijferen. De letter E is bijvoorbeeld de meest gebruikte letter in de Engelse taal.

Dus als de meest voorkomende letter in een geheim bericht K is, is het waarschijnlijk dat K staat voor E.Verder geven gewone woorduitgangen zoals ING, LY en ES ook aanwijzingen. Een brute-force benadering van het proberen van alle 25 mogelijke combinaties zou ook werken om de boodschap te ontcijferen.

In dit voorbeeld is elke letter in het platte tekstbericht 3 letters lager geplaatst in het alfabet.

Tekst zonder opmaak : dit is een geheim bericht

Cijfertekst : wklv lv d vhfuhw phvvdjh

2. Atbash-cijfer

Het Atbash-cijfer is een heel specifiek geval van een vervangend cijfer waarbij de letters van het alfabet zijn omgekeerd. Met andere woorden, alle zoals worden vervangen door Zs, alle Bs worden vervangen door Ys, enzovoort.

Omdat het alfabet twee keer omdraaien je daadwerkelijk alfabet oplevert, kun je een bericht coderen en ontcijferen met exact hetzelfde algoritme.

Voorbeeld:

Tekst zonder opmaak : dit is een geheim bericht

Cijfertekst : Gsrh rh z hvxivg nvhhztv

Het sleutelwoordcijfer is identiek aan het Caesar-cijfer, behalve dat het gebruikte vervangende alfabet kan worden weergegeven met een trefwoord.

Om een ​​vervangend alfabet van een trefwoord te maken, noteert u eerst het alfabet. Hieronder schrijf je het trefwoord op (zonder dubbele letters), gevolgd door de resterende ongebruikte letters van het alfabet.

ABCDEFGHIJKLMNOPQRSTU VWXYZ

KEYWORDABCFGHIJLMNPQSTUVXZ

Om een ​​bericht met platte tekst te coderen, converteert u alle letters van de bovenste rij naar hun overeenkomstige letter op de onderste rij (A tot K, B tot E, enz.).

Met behulp van frequentieanalyse en wat goed onderbouwde gissingen kan dit soort eenvoudige substitutiecijfers gemakkelijk worden gekraakt.

4. Pigpen / vrijmetselaarscijfer

Het varkenscijfer (soms het vrijmetselcijfer of het cijfer van Freemason genoemd) is een eenvoudig vervangend cijfer dat symbolen uitwisselt op basis van een raster. Het schema werd ontwikkeld en gebruikt door de vrijmetselaars in het begin van de 18e eeuw voor het bijhouden van gegevens en correspondentie. De voorbeeldtoets toont een manier waarop de letters aan het raster kunnen worden toegewezen.

B) Polyalfabetische cijfers:

In een polyalfabetisch cijfer kan de vervanging door het bericht veranderen. Met andere woorden, de letter A kan worden gecodeerd als de letter K voor een deel van het bericht, maar later kan deze worden gecodeerd als de letter W.

Aanbevolen cursussen

  • Training op XML
  • CCNA-examentraining
  • Volledige UNIX- en Linux OS-training
  • HTML 5 trainingsbundel

1. Vigenere cijfer

In een Caesar-cijfer wordt elke letter van het alfabet over een aantal plaatsen verschoven; in een Caesar-cijfer van shift 3 zou A bijvoorbeeld D worden, B zou E worden, enzovoort. Het Vigenere-cijfer bestaat uit het gebruik van verschillende Caesar-cijfers achter elkaar met verschillende verschuivingswaarden.

Om te coderen, kan een alfabettabel worden gebruikt, een tabula recta, Vigenere-vierkant of Vigenere-tabel genoemd. Het bestaat uit het alfabet dat 26 keer in verschillende rijen is geschreven, waarbij elk alfabet cyclisch naar links is verschoven ten opzichte van het vorige alfabet, wat overeenkomt met de 26 mogelijke Caesar-cijfers. Op verschillende punten in het coderingsproces gebruikt de codering een ander alfabet dan een van de rijen. Het alfabet dat op elk punt wordt gebruikt, is afhankelijk van een herhalend trefwoord.

Stel bijvoorbeeld dat de te versleutelen platte tekst is:

ATTACKATDAWN

De persoon die het bericht verzendt, kiest een trefwoord en herhaalt dit totdat het overeenkomt met de lengte van de platte tekst, bijvoorbeeld het trefwoord "LEMON":

LEMONLEMONLE

Elke letter wordt gecodeerd door het kruispunt in het raster te vinden tussen de platte tekst en de trefwoordletter. De eerste letter van de platte tekst, A, wordt bijvoorbeeld gecodeerd met behulp van het alfabet in rij L, wat de eerste letter van de sleutel is. Dit wordt gedaan door te kijken naar de letter in rij L en kolom A van het Vigenere-vierkant, namelijk L. Evenzo wordt voor de tweede letter van de platte tekst de tweede letter van de sleutel gebruikt; de letter op rij E en kolom T is X. De rest van de platte tekst is op dezelfde manier gecodeerd:

Tekst zonder opmaak : ATTACKATDAWN

Sleutel : LEMONLEMONLE

Cijfertekst : LXFOPVEFRNHR

De positie van de cijfertekstletter in een rij van de tabel vinden en vervolgens het label van de kolom nemen waarin deze wordt weergegeven als de gewone tekst, decodering uitvoeren. In rij L verschijnt bijvoorbeeld de cijfertekst L in kolom A, die als de eerste platte tekst wordt gebruikt. X opzoeken in rij E van de tabel ontcijfert de tweede letter; het verschijnt in kolom T, die wordt genomen als de platte tekst.

Een Gronsfeld-cijfer is identiek aan het Vigenere-cijfer, behalve dat er slechts 10 rijen worden gebruikt, waardoor het trefwoord een getal kan zijn in plaats van een woord.

steganography

Steganografie is eigenlijk de wetenschap om informatie te verbergen voor mensen die over je zouden snuffelen. Het verschil tussen deze en codering is dat de zogenaamde snoopers mogelijk niet kunnen vertellen dat er in de eerste plaats verborgen informatie is.

Als voorbeeld hebben afbeeldingsbestanden meestal veel ongebruikte ruimte. Deze ruimte kan worden gebruikt om verborgen berichten te verzenden. Als u onderzoek naar codering doet, ziet u mogelijk de term steganografie die soms wordt gebruikt. Het is echter geen echte codering (hoewel het nog steeds behoorlijk effectief kan zijn), en daarom vermeld ik het hier alleen voor de volledigheid.

Dus eigenlijk, als je wilt beginnen met het beoefenen van cryptologie, is de beste manier om te beginnen met het oplossen van algoritmen en Ciphertext samen met Steganography. Hoewel Steganography misschien eenvoudig lijkt en het is geen echte codering, is het nog steeds een van de meest gebruikte codering als het gaat om basisprincipes en wanneer u iets in zeer weinig tijd en op de best mogelijke manier moet coderen.

Eerste afbeeldingsbron: pixabay.com

Aanbevolen artikelen

Hier zijn enkele artikelen die u zullen helpen om meer details over de algoritmen en cryptografie te krijgen, dus ga gewoon door de link.

  1. Datastructuren en algoritmen Interview Vragen | Meest nuttig
  2. 8 geweldige vragen en antwoorden over het algoritme van het algoritme
  3. Beste keuze programmeertalen voor het leren van algoritmen
  4. 10 beste gegevensstructuren en algoritmen C ++ | Basics