logo

Caesarcijfer in Python

In deze tutorial zullen we een van de coderingsmethoden verkennen, genaamd Caesar Cipher. Het is een onderdeel van cryptografie.

Invoering

Bij deze techniek wordt elk teken vervangen door een letter op een bepaalde vaste cijferpositie, later of vóór het alfabet. Alfabet B wordt bijvoorbeeld vervangen door twee posities lager D. D wordt F enzovoort. Deze methode is vernoemd naar de populaire frictiekarakters Julius Caesar, die deze gebruikte om met ambtenaren te communiceren.

Er is een algoritme gebruikt om het te implementeren. Laten we het volgende begrijpen.

Kenmerk van het Caesar Cipher-algoritme

Dit algoritme bestaat uit een aantal functies die hieronder worden gegeven.

  • Met deze techniek is het vrij eenvoudig om encryptie toe te passen.
  • Elke tekst wordt vervangen door het vaste aantal posities lager of hoger in het alfabet.
  • Het is een eenvoudig type vervangend cijfer.

Er is een geheel getal vereist om elk laatste deel van de tekst die naar beneden is verplaatst te definiëren. Deze gehele waarde wordt ook wel de verschuiving genoemd.

zoek in tekenreeks c++

We kunnen dit concept weergeven met behulp van modulaire rekenkunde door eerst de letter in cijfers om te zetten, volgens het schema A = 0, B = 1, C = 2, D = 3…….. Z = 25.

De volgende wiskundige formule kan worden gebruikt om n letter te verschuiven.

Hoe te decoderen?

De decodering is hetzelfde als encryptie. We kunnen een functie maken die een verschuiving in het tegenovergestelde pad tot stand brengt om de originele tekst te decoderen. We kunnen echter de cyclische eigenschap van het cijfer onder de module gebruiken.

Cipher(n) = Ontcijferen(26-n)

Dezelfde functie kan worden gebruikt voor decodering. In plaats daarvan zullen we de verschuivingswaarde zodanig wijzigen dat verschuivingen = 26 - ploegendienst.

wiskunde willekeurige java
Caesarcijfer in Python

Laten we het volgende voorbeeld begrijpen -

Voorbeeld -

 def encypt_func(txt, s): result = '' # transverse the plain txt for i in range(len(txt)): char = txt[i] # encypt_func uppercase characters in plain txt if (char.isupper()): result += chr((ord(char) + s - 64) % 26 + 65) # encypt_func lowercase characters in plain txt else: result += chr((ord(char) + s - 96) % 26 + 97) return result # check the above function txt = 'CEASER CIPHER EXAMPLE' s = 4 print('Plain txt : ' + txt) print('Shift pattern : ' + str(s)) print('Cipher: ' + encypt_func(txt, s)) 

Uitgang:

arrayreeks in c
 Plain txt : CEASER CIPHER EXAMPLE Shift pattern : 4 Cipher: HJFXJWsHNUMJWsJCFRUQJ 

De bovenstaande code heeft het personage keer op keer doorlopen. Het heeft elk teken volgens de regel overgedragen, afhankelijk van de procedure voor het coderen en decoderen van de tekst.

We hebben een aantal specifieke posities gedefinieerd die een cijfertekst genereerden.

Schending van het Caesar-cijferalgoritme

We kunnen de gecodeerde tekst op verschillende manieren hacken. Eén van de manieren is Brute Force-techniek, waarbij je elke mogelijke decoderingssleutel moet proberen. Deze techniek is niet zo moeilijk en vereist niet veel inspanning.

Laten we het volgende voorbeeld begrijpen.

Voorbeeld -

 msg = &apos;rGMTLIVrHIQSGIEWIVGIEWIV&apos; #encrypted msg LETTERS = &apos;ABCDEFGHIJKLMNOPQRSTUVWXYZ&apos; for k in range(len(LETTERS)): transformation = &apos;&apos; for s in msg: if s in LETTERS: n = LETTERS.find(s) n = n - k if n <0: n="n" + len(letters) transformation="transformation" letters[n] else: s print('hacking k #%s: %s' % (k, transformation)) < pre> <p> <strong>Output:</strong> </p> <pre> Hacking k #25: rHNUMJWrIJRTHJFXJWHJFXJW </pre> <h2>Transposition Cipher</h2> <p>Transposition cipher algorithm is a technique where the alphabet order in the plaintext is rearranged to form a cipher text. This algorithm doesn&apos;t support the actual plain text alphabets.</p> <p>Let&apos;s understand this algorithm using an example.</p> <p> <strong>Example -</strong> </p> <p>We will take the simple example called columnar transposition cipher where we write the each character in the pain text in horizontal with specified alphabet width. The vertically written texts are cipher, which create a completely unlike cipher text.</p> <p>Let&apos;s take a plain text, and apply the simple columnar transposition technique as shown below.</p> <img src="//techcodeview.com/img/python-tutorial/89/caesar-cipher-python-2.webp" alt="Caesar Cipher in Python"> <p>We placed the plain text horizontally and the cipher text is created with vertical format as: <strong>hotnejpt.lao.lvi.</strong> To decrypt this, the receiver must use the same table to decrypt the cipher text to plain text.</p> <p> <strong>Code -</strong> </p> <p>Let&apos;s understand the following example.</p> <pre> def split_len(sequence, length): return [sequence[i:i + length] for i in range(0, len(sequence), length)] def encode(k, plaintxt): order = { int(val): n for n, val in enumerate(k) } ciphertext = &apos;&apos; for index in sorted(order.ks()): for part in split_len(plaintxt, len(k)): try:ciphertext += part[order[index]] except IndexError: continue return ciphertext print(encode(&apos;3214&apos;, &apos;HELLO&apos;)) </pre> <p> <strong>Explanation -</strong> </p> <p>In the above code, we have created a function named <strong>split_len(),</strong> which spitted the pain text character, placed in columnar or row format.</p> <p>The <strong>encode()</strong> method created the cipher text with a key specifying the number of columns, and we have printed each cipher text by reading through each column.</p> <h4>Note - The transposition technique is meant to be a significant improvement in crypto security. Cryptanalyst observed that re-encrypting the cipher text using same transposition cipher shows better security.</h4> <hr></0:>

Transpositiecijfer

Transpositiecoderingsalgoritme is een techniek waarbij de alfabetvolgorde in de leesbare tekst wordt herschikt om een ​​gecodeerde tekst te vormen. Dit algoritme ondersteunt de daadwerkelijke alfabetten met platte tekst niet.

voorbeelden van binaire bomen

Laten we dit algoritme begrijpen aan de hand van een voorbeeld.

Voorbeeld -

We zullen het eenvoudige voorbeeld nemen dat kolomvormige transpositiecodering wordt genoemd, waarbij we elk teken in de pijntekst horizontaal schrijven met een opgegeven alfabetbreedte. De verticaal geschreven teksten zijn gecodeerd, waardoor een totaal andere gecodeerde tekst ontstaat.

base64-decodering in js

Laten we een platte tekst nemen en de eenvoudige kolomtranspositietechniek toepassen, zoals hieronder weergegeven.

Caesarcijfer in Python

We hebben de platte tekst horizontaal geplaatst en de gecodeerde tekst is gemaakt met een verticaal formaat als: hotnejpt.lao.lvi. Om dit te decoderen, moet de ontvanger dezelfde tabel gebruiken om de gecodeerde tekst naar platte tekst te decoderen.

Code-

Laten we het volgende voorbeeld begrijpen.

 def split_len(sequence, length): return [sequence[i:i + length] for i in range(0, len(sequence), length)] def encode(k, plaintxt): order = { int(val): n for n, val in enumerate(k) } ciphertext = &apos;&apos; for index in sorted(order.ks()): for part in split_len(plaintxt, len(k)): try:ciphertext += part[order[index]] except IndexError: continue return ciphertext print(encode(&apos;3214&apos;, &apos;HELLO&apos;)) 

Uitleg -

In de bovenstaande code hebben we een functie gemaakt met de naam split_len(), waarin het pijntekstteken werd uitgespuugd, geplaatst in kolom- of rijformaat.

De coderen() methode creëerde de gecodeerde tekst met een sleutel die het aantal kolommen specificeerde, en we hebben elke gecodeerde tekst afgedrukt door elke kolom te lezen.

Opmerking - De transpositietechniek is bedoeld als een aanzienlijke verbetering van de crypto-beveiliging. Cryptanalist merkte op dat het opnieuw coderen van de gecodeerde tekst met behulp van hetzelfde transpositiecijfer een betere beveiliging oplevert.