Criptografía con Python - Caesar Cipher
En el último capítulo, nos ocupamos del cifrado inverso. Este capítulo habla en detalle sobre el cifrado César.
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:
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)
Salida
Puede ver el cifrado César, que es el resultado como se muestra en la siguiente imagen:
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 esBrute Force Technique,lo que implica probar todas las claves de descifrado posibles. Esta técnica no requiere mucho esfuerzo y es relativamente simple para un hacker.
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: