Shift Cipher

leinad

Power Member
Boas... Precisava de ajuda para criar um programa que faça Shift Chiper a partir de um ficheiro de texto. Será que alguém me pode ajudar neste assunto? Pode ser em qualquer linguagem, era preferencial em Perl. Obrigado a todos que possa ajudar...
 
Ca vai, em python.

Código:
def shift_cipher(shift, message):
   if shift < 0 or shift > 26 or type(message) is not str:
      return message

   cipher = ""
   offset = ord('a')
   message = message.lower()
   for char in message:
      cipher += chr(offset + (ord(char) + shift - offset) % 26)

   return cipher
 
Boas... eu sei que ñ fui eu que pedi ajuda, foi um amigo meu a meu pedido que o postou... mas aproveito para agradecer o seu post.... quem puder ajudar mais... agradeço porque preciso mesmo desta função a todo o custo... e eskeci-m de mencionar uma coisa... foi-m pedido para parametrizar o prog d forma a escrever por exemplo "shift.exe (qqficheiro).txt" na linha de comandos e ele execute o prog automaticamente e mostre o resultado... será que me consguem ajudar nesta parte?? Obrigado a todos
 
Tu disseste que podia ser em qualquer linguagem não especificaste que tinha de ser numa que compilasse para código nativo...
Seja como for aqui vai a versão em python faz o shift cypher a um ficheiro. A utilização é:
Código:
python shift.py <shift> <caminho do ficheiro>
Código:
def shift_cipher(shift, message):
    if shift < 0 or shift > 26 or type(message) is not str:
        return message

    cipher = ""
    offset = ord('a')
    message = message.lower()
    for char in message:
        cipher += chr(offset + (ord(char) + shift - offset) % 26)
    return cipher

from sys import argv

if __name__ == "__main__":
    if len(argv) < 3:
        exit()
    try:
        shift = int(argv[1])
        f = open(argv[2])
    except (IOError, ValueError), e:
        print e
    else:
        message = ""
        for line in f.readlines():
            message += line.rstrip() # remove \n
        
        print shift_cipher(shift, message)
        f.close()
 
Última edição:
Back
Topo