logo

Caesar Cipher Pythonban

Ebben az oktatóanyagban megvizsgáljuk a Caesar Cipher nevű titkosítási módszerek egyikét. Ez a kriptográfia része.

Bevezetés

Ennél a technikánál minden karaktert egy betűvel helyettesítenek, amely bizonyos fix számjegyekkel később vagy az ábécé előtt található. Például - A B ábécét két pozícióval lefelé D helyettesíti. D-ből F lesz és így tovább. Ez a módszer a népszerű súrlódó karakterekről, Julius Caesarról kapta a nevét, aki tisztviselőkkel való kommunikációra használta.

Ennek megvalósítására létezik egy algoritmus. Értsük meg a következőket.

A Caesar titkosítási algoritmus jellemzője

Ez az algoritmus néhány jellemzőből áll, amelyeket alább ismertetünk.

  • Ez a technika meglehetősen egyszerű a titkosítás alkalmazása során.
  • Minden szöveget az ábécével lefelé vagy felfelé rögzített szám helyettesít.
  • Ez egy egyszerű típusú helyettesítő rejtjel.

A lefelé mozgatott szövegek mindegyikének meghatározásához egy egész szám szükséges. Ezt az egész értéket shiftnek is nevezik.

konstruktorok java-ban

Ezt a fogalmat a moduláris aritmetika segítségével úgy ábrázolhatjuk, hogy először a betűt számokká alakítjuk, a séma szerint A = 0, B = 1, C = 2, D = 3…….. Z = 25.

A következő matematikai képlet használható n betű eltolására.

Hogyan kell visszafejteni?

A visszafejtés ugyanaz, mint a titkosítás. Létrehozhatunk egy függvényt, amely az eredeti szöveg visszafejtéséhez az ellenkező útvonalon való eltolódást hajtja végre. A modul alatt azonban használhatjuk a rejtjel ciklikus tulajdonságát.

Rejtjel(n) = Rejtjel feloldása(26-n)

c logikai érték

Ugyanez a funkció használható a visszafejtéshez. Ehelyett módosítani fogjuk az eltolás értékét úgy, hogy shift = = 26 - műszak.

Caesar Cipher Pythonban

Értsük meg a következő példát -

Példa -

 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)) 

Kimenet:

 Plain txt : CEASER CIPHER EXAMPLE Shift pattern : 4 Cipher: HJFXJWsHNUMJWsJCFRUQJ 

A fenti kód egyszerre járta be a karaktert. Az egyes karaktereket szabály szerint vitte át, a szöveg titkosítási és visszafejtési eljárásától függően.

Néhány konkrét pozíciókészletet határoztunk meg, amelyek titkosított szöveget generáltak.

színész zeenat aman

A Caesar titkosítási algoritmus megsértése

A titkosított szöveget többféleképpen feltörhetjük. Az egyik mód az Brute Force Technika, amely magában foglalja az összes lehetséges visszafejtési kulcs kipróbálását. Ez a technika nem olyan nehéz, és nem igényel sok erőfeszítést.

Értsük meg a következő példát.

Példa -

 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:>

Transzpozíciós titkosítás

A transzpozíciós rejtjelezési algoritmus egy olyan technika, amelynek során az ábécé sorrendjét a nyílt szövegben átrendezik, hogy titkosított szöveget alkossanak. Ez az algoritmus nem támogatja a tényleges egyszerű szöveges ábécét.

kapcsolat összetétele

Értsük meg ezt az algoritmust egy példa segítségével.

Példa -

Vegyünk egy egyszerű példát, az oszlopos transzpozíciós titkosítást, ahol a fájdalomszöveg minden karakterét vízszintesen írjuk, meghatározott ábécé szélességgel. A függőlegesen írt szövegek titkosítottak, amelyek teljesen eltérő titkosított szöveget hoznak létre.

Vegyünk egy egyszerű szöveget, és alkalmazzuk az egyszerű oszlopos transzponálási technikát az alábbiak szerint.

Caesar Cipher Pythonban

A sima szöveget vízszintesen helyeztük el, és a titkosított szöveg függőleges formátumban jön létre: hotnejpt.lao.lvi. Ennek visszafejtéséhez a vevőnek ugyanazt a táblázatot kell használnia a titkosított szöveg egyszerű szöveggé történő visszafejtéséhez.

Kód -

0,06 törtként

Értsük meg a következő példát.

 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;)) 

Magyarázat -

A fenti kódban létrehoztunk egy nevű függvényt split_len(), amely kiköpte a fájdalomszöveg karakterét, oszlopos vagy soros formátumban elhelyezve.

A kódol() metódus létrehozta a rejtjelezett szöveget az oszlopok számát meghatározó kulccsal, és minden egyes titkosított szöveget kinyomtattunk az egyes oszlopok átolvasásával.

Megjegyzés – Az átültetési technika jelentős előrelépést jelent a kriptográfiai biztonság terén. A Cryptanalyst megfigyelte, hogy a rejtjelezett szöveg újratitkosítása ugyanazzal az átültetési rejtjellel jobb biztonságot jelent.