logo

Cifrado César en Python

En este tutorial, exploraremos uno de los métodos de cifrado llamado Caesar Cipher. Es parte de la criptografía.

Introducción

En esta técnica, cada carácter se sustituye por una letra en una determinada posición numérica fija que se encuentra antes o después del alfabeto. Por ejemplo, el alfabeto B se reemplaza por dos posiciones debajo de D. D se convertiría en F y así sucesivamente. Este método lleva el nombre del popular personaje de fricción Julio César, quien lo usaba para comunicarse con los funcionarios.

Hay un algoritmo utilizado para implementarlo. Entendamos lo siguiente.

Característica del algoritmo de cifrado César

Este algoritmo consta de algunas características que se detallan a continuación.

  • Esta técnica es bastante sencilla de aplicar cifrado.
  • Cada texto se reemplaza por el número fijo de posición hacia abajo o hacia arriba con el alfabeto.
  • Es un tipo simple de cifrado sustituto.

Se requiere un valor entero para definir cada último texto que se ha movido hacia abajo. Este valor entero también se conoce como desplazamiento.

pruebas de regresión en pruebas de software

Podemos representar este concepto usando aritmética modular transmutando primero la letra en números, según el esquema, A = 0, B = 1, C = 2, D = 3…….. Z = 25.

computadora inventada en qué año

La siguiente fórmula matemática se puede utilizar para desplazar n letras.

¿Cómo descifrar?

El descifrado es lo mismo que el cifrado. Podemos crear una función que logre desplazarse en la ruta opuesta para descifrar el texto original. Sin embargo, podemos usar la propiedad cíclica del cifrado debajo del módulo.

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

La misma función se puede utilizar para descifrar. En su lugar, modificaremos el valor de desplazamiento de modo que desplazamientos = 26 - turno.

Cifrado César en Python

Entendamos el siguiente ejemplo:

cadena de lista java

Ejemplo -

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

Producción:

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

El código anterior ha atravesado el carácter a la vez. Transfirió cada carácter según la regla dependiendo del procedimiento de cifrado y descifrado del texto.

Hemos definido algunos conjuntos específicos de posiciones que generaron un texto cifrado.

Infracción del algoritmo de cifrado César

Podemos piratear el texto cifrado de varias formas. Una de las maneras es técnica de fuerza bruta, lo que implica probar todas las claves de descifrado posibles. Esta técnica no es tan difícil y no requiere mucho esfuerzo.

Entendamos el siguiente ejemplo.

Ejemplo -

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

Cifrado de transposición

El algoritmo de cifrado de transposición es una técnica en la que el orden alfabético del texto sin formato se reorganiza para formar un texto cifrado. Este algoritmo no admite los alfabetos de texto sin formato reales.

git agregar --todos

Entendamos este algoritmo usando un ejemplo.

Ejemplo -

Tomaremos el ejemplo simple llamado cifrado de transposición de columnas donde escribimos cada carácter en el texto dolorido en horizontal con un ancho de alfabeto específico. Los textos escritos verticalmente son cifrados, lo que crea un texto cifrado completamente diferente.

Tomemos un texto sin formato y apliquemos la técnica de transposición de columnas simple como se muestra a continuación.

Cifrado César en Python

Colocamos el texto plano horizontalmente y el texto cifrado se crea con formato vertical como: hotnejpt.lao.lvi. Para descifrar esto, el receptor debe utilizar la misma tabla para descifrar el texto cifrado en texto sin formato.

apurva padgaonkar

Código -

Entendamos el siguiente ejemplo.

 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ón -

En el código anterior, hemos creado una función llamada dividir_len(), que escupió el carácter de texto doloroso, colocado en formato de columnas o filas.

El codificar() El método creó el texto cifrado con una clave que especifica el número de columnas, y hemos impreso cada texto cifrado leyendo cada columna.

Nota: La técnica de transposición pretende ser una mejora significativa en la seguridad criptográfica. El criptoanalista observó que volver a cifrar el texto cifrado utilizando el mismo cifrado de transposición muestra una mayor seguridad.