Crittografia con Python - Caesar Cipher
Nell'ultimo capitolo abbiamo trattato la cifratura inversa. Questo capitolo parla del cifrario di Cesare in dettaglio.
Algoritmo di Caesar Cipher
L'algoritmo del cifrario Cesare ha le seguenti caratteristiche:
Caesar Cipher Technique è il metodo semplice e facile della tecnica di crittografia.
È un semplice tipo di cifratura a sostituzione.
Ogni lettera di testo normale viene sostituita da una lettera con un numero fisso di posizioni in basso con l'alfabeto.
Il diagramma seguente illustra il funzionamento dell'implementazione dell'algoritmo di cifratura Caesar:
L'implementazione del programma dell'algoritmo di cifratura Caesar è la seguente:
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)
Produzione
Puoi vedere il codice di Cesare, che è l'output come mostrato nell'immagine seguente -
Spiegazione
Il carattere di testo normale viene attraversato uno alla volta.
Per ogni carattere nel testo normale dato, trasforma il carattere dato secondo la regola a seconda della procedura di crittografia e decrittografia del testo.
Dopo aver seguito i passaggi, viene generata una nuova stringa che viene definita testo cifrato.
Hacking di Caesar Cipher Algorithm
Il testo cifrato può essere violato con varie possibilità. Una di queste possibilità èBrute Force Technique,che comporta il tentativo di ogni possibile chiave di decrittazione. Questa tecnica non richiede molti sforzi ed è relativamente semplice per un hacker.
L'implementazione del programma per l'hacking dell'algoritmo di cifratura Caesar è la seguente:
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))
Considera il testo cifrato criptato nell'esempio precedente. Quindi, l'output con i possibili metodi di hacking con la chiave e l'utilizzo della tecnica di attacco di forza bruta è il seguente: