Criptografia com Python - Cifra de César

No último capítulo, lidamos com a cifra reversa. Este capítulo fala sobre a cifra de César em detalhes.

Algoritmo da Cifra de César

O algoritmo da cifra de César possui os seguintes recursos -

  • Caesar Cipher Technique é o método simples e fácil de técnica de criptografia.

  • É um tipo simples de cifra de substituição.

  • Cada letra do texto simples é substituída por uma letra com um número fixo de posições abaixo do alfabeto.

O diagrama a seguir descreve o funcionamento da implementação do algoritmo de cifra de César -

A implementação do programa de algoritmo de cifra de César é a seguinte -

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)

Resultado

Você pode ver a cifra de César, que é a saída conforme mostrado na imagem a seguir -

Explicação

O caractere de texto simples é percorrido um de cada vez.

  • Para cada caractere no texto simples fornecido, transforme o caractere fornecido conforme a regra dependendo do procedimento de criptografia e descriptografia do texto.

  • Após as etapas serem seguidas, uma nova string é gerada, chamada de texto cifrado.

Hacking of Caesar Cipher Algorithm

O texto cifrado pode ser hackeado com várias possibilidades. Uma dessas possibilidades éBrute Force Technique,que envolve tentar todas as chaves de descriptografia possíveis. Essa técnica não exige muito esforço e é relativamente simples para um hacker.

A implementação do programa para hackear o algoritmo de cifra Caesar é a seguinte -

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 o texto cifrado criptografado no exemplo anterior. Então, a saída com possíveis métodos de hacking com a chave e usando a técnica de ataque de força bruta é a seguinte -