logo

Caesar Cipher en Python

En aquest tutorial, explorarem un dels mètodes de xifratge anomenats Caesar Cipher. Forma part de la criptografia.

Introducció

En aquesta tècnica, cada caràcter es substitueix per una lletra determinada posició de nombre fix que és posterior o abans de l'alfabet. Per exemple: l'alfabet B es substitueix per dues posicions cap avall D. D es convertiria en F i així successivament. Aquest mètode rep el nom dels personatges populars de fricció Juli Cèsar, que l'utilitzava per comunicar-se amb els funcionaris.

Hi ha un algorisme utilitzat per implementar-lo. Entenem el següent.

Característica de l'algoritme de xifrat de César

Aquest algorisme consta d'algunes característiques que es detallen a continuació.

  • Aquesta tècnica és bastant senzilla d'aplicar el xifratge.
  • Cada text se substitueix pel nombre fix de posició cap avall o cap amunt amb l'alfabet.
  • És un tipus simple de xifrat substitutiu.

Hi ha un valor enter necessari per definir cada últim text que s'ha mogut cap avall. Aquest valor sencer també es coneix com a desplaçament.

activa java

Podem representar aquest concepte mitjançant l'aritmètica modular transmutant primer la lletra en números, segons l'esquema, A = 0, B = 1, C = 2, D = 3…….. Z = 25.

La classe abstracta pot tenir un constructor

La següent fórmula matemàtica es pot utilitzar per desplaçar n lletra.

Com desxifrar?

El desxifrat és el mateix que el xifrat. Podem crear una funció que permetrà canviar el camí oposat per desxifrar el text original. Tanmateix, podem utilitzar la propietat cíclica del xifrat sota el mòdul.

Cipher(n) = De-cipher(26-n)

La mateixa funció es pot utilitzar per al desxifrat. En lloc d'això, modificarem el valor del canvi de manera que canvia = 26 - torn.

Caesar Cipher en Python

Entenem el següent exemple:

connectar-se a la base de dades en java

Exemple -

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

Sortida:

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

El codi anterior ha travessat el caràcter alhora. Va transferir cada caràcter segons la regla en funció del procediment de xifrat i desxifrat del text.

Hem definit alguns conjunts específics de posicions que van generar un text xifrat.

Incompliment de l'algoritme de xifrat de César

Podem piratejar el text xifrat de diverses maneres. Una de les maneres és Tècnica de força bruta, que implica provar totes les claus de desxifrat possibles. Aquesta tècnica no és tan difícil i no requereix gaire esforç.

Entenem l'exemple següent.

Exemple -

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

Xifrat de transposició

L'algorisme de xifrat de transposició és una tècnica on l'ordre de l'alfabet en el text pla es reordena per formar un text xifrat. Aquest algorisme no admet els alfabets reals de text sense format.

boto3

Entendrem aquest algorisme amb un exemple.

Exemple -

Prenem l'exemple senzill anomenat xifrat de transposició columnar on escrivim cada caràcter del text de dolor en horitzontal amb l'amplada de l'alfabet especificada. Els textos escrits verticalment són xifrats, que creen un text xifrat completament diferent.

Agafem un text senzill i apliquem la tècnica de transposició de columnes senzilla com es mostra a continuació.

Caesar Cipher en Python

Hem col·locat el text sense format horitzontalment i el text xifrat es crea amb un format vertical com: hotnejpt.lao.lvi. Per desxifrar això, el receptor ha d'utilitzar la mateixa taula per desxifrar el text xifrat a text sense format.

java substitueix el caràcter de la cadena

Codi -

Entenem l'exemple següent.

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

Explicació -

Al codi anterior, hem creat una funció anomenada split_len(), que va escopir el caràcter de text dolorós, col·locat en format de columna o fila.

El codificar () El mètode va crear el text xifrat amb una clau que especifica el nombre de columnes, i hem imprès cada text xifrat llegint cada columna.

Nota: la tècnica de transposició pretén ser una millora significativa en la seguretat criptogràfica. El criptoanalista va observar que tornar a xifrar el text xifrat amb el mateix xifrat de transposició mostra una millor seguretat.