in

Criptografía con Python – Guía rápida

encryption

La criptografía es el arte de la comunicación entre dos usuarios a través de mensajes codificados. La ciencia de la criptografía surgió con el motivo básico de brindar seguridad a los mensajes confidenciales transferidos de una parte a otra.

La criptografía se define como el arte y la ciencia de ocultar el mensaje para introducir la privacidad y el secreto reconocidos en la seguridad de la información.

Terminologías de criptografía

Los términos de uso frecuente en criptografía se explican aquí:

Texto sin formato

El mensaje de texto sin formato es el texto que es legible y puede ser entendido por todos los usuarios. El texto sin formato es el mensaje que se somete a criptografía.

Texto cifrado

El texto cifrado es el mensaje que se obtiene después de aplicar la criptografía en texto plano.

Cifrado

El proceso de convertir texto sin formato en texto cifrado se llama cifrado. También se denomina codificación.

Descifrado

El proceso de convertir texto cifrado en texto sin formato se denomina descifrado. También se denomina decodificación.

El diagrama que se muestra a continuación muestra una ilustración del proceso completo de criptografía:

Terminologías de criptografía

Características de la criptografía moderna

Las características básicas de la criptografía moderna son las siguientes:

  • Opera en secuencias de bits.

  • Utiliza algoritmos matemáticos para asegurar la información.

  • Requiere que las partes interesadas en un canal de comunicación seguro logren privacidad.

El cifrado de doble fuerza, también llamado cifrado múltiple, es el proceso de cifrar un texto ya cifrado una o más veces, ya sea con el mismo algoritmo o patrón o con uno diferente.

Los otros nombres para el cifrado de doble fuerza incluyen cifrado en cascada o cifrado en cascada.

Niveles de cifrado de doble fuerza

El cifrado de doble fuerza incluye varios niveles de cifrado que se explican a continuación:

Primera capa de cifrado

El texto cifrado se genera a partir del mensaje legible original utilizando algoritmos hash y claves simétricas. Las claves simétricas posteriores se cifran con la ayuda de claves asimétricas. La mejor ilustración para este patrón es combinar el resumen de hash del texto cifrado en una cápsula. El receptor calculará el resumen primero y luego descifrará el texto para verificar que el texto no esté alterado en el medio.

Segunda capa de cifrado

La segunda capa de cifrado es el proceso de agregar una capa más para cifrar el texto con el mismo algoritmo o con un algoritmo diferente. Por lo general, se utiliza una contraseña simétrica de 32 bits de caracteres de longitud para lo mismo.

Tercera capa de cifrado

En este proceso, la cápsula cifrada se transmite a través de una conexión SSL / TLS al socio de comunicación.

El siguiente diagrama muestra gráficamente el proceso de doble cifrado:

Cifrado de fuerza

Criptografía híbrida

La criptografía híbrida es el proceso de utilizar múltiples cifrados de diferentes tipos al incluir los beneficios de cada uno de los cifrados. Existe un enfoque común que generalmente se sigue para generar una clave secreta aleatoria para un cifrado simétrico y luego cifrar esta clave mediante criptografía de clave asimétrica.

Debido a este patrón, el mensaje original en sí se encripta usando el cifrado simétrico y luego usando la clave secreta. El receptor después de recibir el mensaje descifra el mensaje usando primero la clave secreta, usando su propia clave privada y luego usa la clave especificada para descifrar el mensaje.

Python es un lenguaje de programación de código abierto que es de alto nivel, interpretado, interactivo y orientado a objetos. Está diseñado para ser muy legible. La sintaxis del lenguaje Python es fácil de entender y utiliza palabras clave en inglés con frecuencia.

Características del lenguaje Python

Python proporciona las siguientes características principales:

Interpretado

Python se procesa en tiempo de ejecución mediante el intérprete. No es necesario compilar un programa antes de su ejecución. Es similar a PERL y PHP.

Orientado a objetos

Python sigue patrones de diseño y estilo orientados a objetos. Incluye definición de clase con varias características como encapsulación y polimorfismo.

Puntos clave del lenguaje Python

Los puntos clave del lenguaje de programación Python son los siguientes:

  • Incluye programación y métodos funcionales y estructurados, así como métodos de programación orientada a objetos.

  • Se puede utilizar como lenguaje de scripting o como lenguaje de programación.

  • Incluye recolección automática de basura.

  • Incluye tipos de datos dinámicos de alto nivel y admite varias comprobaciones dinámicas de tipos.

  • Python incluye una función de integración con C, C ++ y lenguajes como Java.

El enlace de descarga para el lenguaje Python es el siguiente: www.python.org/downloadsIncluye paquetes para varios sistemas operativos como distribuciones de Windows, MacOS y Linux.

Descarga de Python

Cadenas de Python

La declaración básica de cadenas se muestra a continuación:

str="Hello World!"

Listas de Python

Las listas de Python se pueden declarar como tipos de datos compuestos, separados por comas y encerrados entre corchetes ([]).

list = [ 'abcd', 786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']

Tuplas de Python

Una tupla es un tipo de datos dinámico de Python que consta de un número de valores separados por comas. Las tuplas se incluyen entre paréntesis.

tinytuple = (123, 'john')

Diccionario de Python

El diccionario de Python es un tipo de tabla hash. Una clave de diccionario puede ser casi cualquier tipo de datos de Python, que suelen ser números o cadenas.

tinydict = {'name': 'omkar','code':6734, 'dept': 'sales'}

Paquetes de criptografía

Python incluye un paquete llamado criptografía que proporciona recetas y primitivas criptográficas. Es compatible con Python 2.7, Python 3.4+ y PyPy 5.3+. La instalación básica del paquete de criptografía se logra mediante el siguiente comando:

pip install cryptography

Hay varios paquetes con recetas de alto nivel e interfaces de bajo nivel para algoritmos criptográficos comunes como cifrados simétricos, resúmenes de mensajes y funciones de derivación clave.

A lo largo de este tutorial, utilizaremos varios paquetes de Python para la implementación de algoritmos criptográficos.

El capítulo anterior le dio una descripción general de la instalación de Python en su computadora local. En este capítulo aprenderá en detalle sobre el cifrado inverso y su codificación.

Algoritmo de cifrado inverso

El algoritmo de cifrado inverso tiene las siguientes características:

  • Cifrado inverso utiliza un patrón de invertir la cadena de texto sin formato para convertirlo en texto cifrado.

  • El proceso de cifrado y descifrado es el mismo.

  • Para descifrar el texto cifrado, el usuario simplemente necesita invertir el texto cifrado para obtener el texto sin formato.

Retirarse

El mayor inconveniente del cifrado inverso es que es muy débil. Un pirata informático puede romper fácilmente el texto cifrado para obtener el mensaje original. Por lo tanto, el cifrado inverso no se considera una buena opción para mantener un canal de comunicación seguro.

retirarse

Ejemplo

Considere un ejemplo donde la declaración Este es un programa para explicar el cifrado inverso se implementará con un algoritmo de cifrado inverso. El siguiente código de Python usa el algoritmo para obtener el resultado.

message="This is program to explain reverse cipher."
translated = '' #cipher text is stored in this variable
i = len(message) - 1

while i >= 0:
   translated = translated + message[i]
   i = i - 1
print(“The cipher text is : “, translated)

Producción

Puede ver el texto invertido, que es la salida como se muestra en la siguiente imagen:

Producción

Explicación

  • El texto sin formato se almacena en el mensaje variable y la variable traducida se utiliza para almacenar el texto cifrado creado.

  • La longitud del texto sin formato se calcula utilizando por bucle y con la ayuda de número de índice. Los caracteres se almacenan en la variable de texto cifrado traducido que está impreso en la última línea.

En el último capítulo, nos hemos ocupado del cifrado inverso. Este capítulo habla sobre el cifrado César en detalle.

Algoritmo de cifrado César

El algoritmo del cifrado Caesar tiene las siguientes características:

  • La técnica de cifrado Caesar es el método sencillo y sencillo de la técnica de cifrado.

  • Es un tipo simple de cifrado de sustitución.

  • Cada letra de texto sin formato se reemplaza por una letra con un número fijo de posiciones hacia abajo con el alfabeto.

El siguiente diagrama muestra el funcionamiento de la implementación del algoritmo de cifrado Caesar:

Algoritmo de cifrado César

La implementación del programa del algoritmo de cifrado Caesar es la siguiente:

def encrypt(text,s):
result = ""
   # transverse the plain text
   for i in range(len(text)):
      char = text[i]
      # Encrypt uppercase characters in plain text
      
      if (char.isupper()):
         result += chr((ord(char) + s-65) % 26 + 65)
      # Encrypt lowercase characters in plain text
      else:
         result += chr((ord(char) + s - 97) % 26 + 97)
      return result
#check the above function
text = "CEASER CIPHER DEMO"
s = 4

print "Plain Text : " + text
print "Shift pattern : " + str(s)
print "Cipher: " + encrypt(text,s)

Producción

Puede ver el cifrado César, que es el resultado como se muestra en la siguiente imagen:

Cifrado césar

Explicación

El carácter de texto sin formato se recorre de uno en uno.

  • Para cada carácter en el texto sin formato dado, transforme el carácter dado según la regla según el procedimiento de cifrado y descifrado del texto.

  • Después de seguir los pasos, se genera una nueva cadena que se conoce como texto cifrado.

Hackeo del algoritmo de cifrado Caesar

El texto cifrado se puede piratear con varias posibilidades. Una de esas posibilidades es Técnica de fuerza bruta, lo que implica probar todas las claves de descifrado posibles. Esta técnica no requiere mucho esfuerzo y es relativamente sencilla para un pirata informático.

La implementación del programa para piratear el algoritmo de cifrado Caesar es la siguiente:

message="GIEWIVrGMTLIVrHIQS" #encrypted message
LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

for key in range(len(LETTERS)):
   translated = ''
   for symbol in message:
      if symbol in LETTERS:
         num = LETTERS.find(symbol)
         num = num - key
         if num < 0:
            num = num + len(LETTERS)
         translated = translated + LETTERS[num]
      else:
         translated = translated + symbol
print('Hacking key #%s: %s' % (key, translated))

Considere el texto cifrado encriptado en el ejemplo anterior. Luego, la salida con posibles métodos de piratería con la clave y el uso de la técnica de ataque de fuerza bruta es la siguiente:

Hackeo de Cipher César

Hasta ahora, ha aprendido sobre el cifrado inverso y los algoritmos de cifrado César. Ahora, analicemos el algoritmo ROT13 y su implementación.

Explicación del algoritmo ROT13

El cifrado ROT13 se refiere a la forma abreviada Rotar 13 lugares. Es un caso especial de Caesar Cipher en el que el desplazamiento es siempre 13. Cada letra se desplaza 13 lugares para cifrar o descifrar el mensaje.

Ejemplo

El siguiente diagrama explica gráficamente el proceso del algoritmo ROT13:

Proceso de algoritmo ROT13

Código de programa

La implementación del programa del algoritmo ROT13 es la siguiente:

from string import maketrans

rot13trans = maketrans('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz', 
   'NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm')

# Function to translate plain text
def rot13(text):
   return text.translate(rot13trans)
def main():
   txt = "ROT13 Algorithm"
   print rot13(txt)
	
if __name__ == "__main__":
   main()

Puede ver la salida ROT13 como se muestra en la siguiente imagen:

ROT13

Retirarse

El algoritmo ROT13 utiliza 13 turnos. Por lo tanto, es muy fácil cambiar los caracteres a la inversa para descifrar el texto cifrado.

Análisis del algoritmo ROT13

El algoritmo de cifrado ROT13 se considera un caso especial de Caesar Cipher. No es un algoritmo muy seguro y se puede romper fácilmente con el análisis de frecuencia o simplemente probando las posibles 25 teclas, mientras que ROT13 se puede romper cambiando 13 lugares. Por tanto, no incluye ningún uso práctico.

Transposition Cipher es un algoritmo criptográfico donde el orden de los alfabetos en el texto sin formato se reorganiza para formar un cifrado …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

escritorioremotoGooglePlay

Chrome Remote Desktop se ha actualizado para permitir la transmisión de audio

apple touch icon@2

c – ¿Qué son los archivos .ay .so?