1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.
  2. Informação: Pela 0:30 desta Sexta-feira (9 de Dezembro, 23:30 de Quinta-feira nos Açores) o Fórum e restantes sites da ZWAME vão estar offline para manutenção durante cerca de 1h30.
    Se necessário faremos actualizações via Twitter e Facebook.
    Remover anúncio

Shift Cipher

Discussão em 'Programação' iniciada por leinad, 27 de Junho de 2007. (Respostas: 4; Visualizações: 730)

  1. leinad

    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...
     
  2. napalm

    napalm Power Member

    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
    
     
  3. Py_

    Py_ Power Member

    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
     
  4. napalm

    napalm Power Member

    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: 28 de Junho de 2007
  5. Py_

    Py_ Power Member

    Obrigadissimo pela ajuda... :D
     

Partilhar esta Página