Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Marcos Guimarães

[Python] Dúvida na implementação do Vigenere Cipher modificado

Recommended Posts

Boa noite galera, alguém aqui que sabe python poderia me ajudar? Meu professor passou um trabalho em python e eu nunca mexi com python na minha vida, estou tendo um pouco de trabalho, já tentei quase tudo e não consigo resolver esse problema.

Isso é o que eu tenho que fazer:

Write a script in Python that is an implementation of a version of the Vigenere cipher for English text. Your script should distinguish lowercase and uppercase letters (i.e., the encryption key and the plaintext are allowed to be composed of lowercase and uppercase letters but the ciphertext should be uppercase). In addition to letters, there will be four other characters in the plain text: comma (26), dot (27), dash (28), underscore (29) changing the encryption function to be under mod 30. Your script should read from standard input and write to standard output. It should prompt the user for the encryption key of size k. The key is not allowed to be repeated as in the standard Vigenere cipher. Instead, we will follow a block cipher-based idea. Basically, the plaintext and ciphertext will have blocks of size k which is same as the key size. If the key length is shorter than the plaintext, the ciphertext of block size k of the previous block is concatenated to the key. Here is an example when the keyword is ”Carbondale” with k = 10:

Plaintext : SIU_CS-Department_is_the_best Key : CarbondaleUIHAQBBDPTUZ,MUOUCX Ciphertext: UIHAQBBDPTUZ,MUOUCXHTODQTPYUM

Esse é o meu código até agora (estou usando o terminal do ubuntu pra compilar):

text = []encr = []encr1 = []key = []answer = []i = 0key = raw_input("Type your key: ")text = raw_input("Type your message: ")#print(key)#print(text)text = text.lower()key = key.lower()#print(text)#print(key)key1 = list(key)#print(len(key1))text1 = list(text)#print(ord(key1[0]))var = 0a = len(key)b = len(text)if (len(text)%len(key) == 0):    c = 0;else:    c = len(text)%len(key)    for i in range(0,len(key)-c):        text1.append('!')while (len(key1) <= len(text1)):        for i in range(0,a):        num1 = ord(text1[i+var])%97        num2 = ord(key1[i+var])%97        num3 = num1+num2        #print(i)        if (num3 > 25):            encr.append(num3%25)        else:            encr.append(num3)        i + 1    #print(encr)                for i in range(0,a):        encr1.append(chr(encr[i+var]+97))        i + 1    #print(encr1)        for i in range(0,a):        key1.append(encr1[i+var])        i + 1    #print(key1)    var = var + a    #print(var)if(c==0):    #print(encr1)    result = ''.join(encr1)        print(result.upper())else:    d = len(key)-c        for i in range(0,d):        del encr1[-1]        i + 1    #print(encr1)    result = ''.join(encr1)        print(result.upper())

Preciso de ajuda pra verificar se os caracteres digitados pertencem ao alfabeto do exercício, também gostaria de saber se alguém tem alguma ideia do que eu posso fazer pra tratar os caracteres adicionais "," "." "/" "_" Eles não ficam em sequência na tabela ASCII, por isso estou com dificuldades. Alguém, por favor, poderia me ajudar?

Editado por Marcos Guimarães
Usar a tag para códigos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×