1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Shift Cipher

Discussão em 'Programação' iniciada por eagler, 20 de Julho de 2007. (Respostas: 3; Visualizações: 672)

  1. Precisava de uma ajudinha.. precisava do código fonte de um programa (Shift Cipher) que faça um shift de 14 casas e que aceite apenas as 26 letras de A a Z..

    De preferência na linguagem C, VB ou C#.

    Exemplo: inserimos o texto "abc" e obtemos o texto cifrado "opq".

    Eu sei que há já uns tópicos no fórum mas não fazem bem o que é pedido.. :(

    Muito obrigado.
    Abraço.
    Eagler
     
  2. K0mA

    K0mA Power Member

    Vê lá se isto ajuda.
     
  3. LaNgSuYaR

    LaNgSuYaR Power Member

    é simples de fazer se pensares nas letras como numeros d 0 a 25. Como a codificação em ASCII do A é 65 (penso eu), para fazeres o cálculo da cifra convém tomares A = 0, B = 1, ....

    Assim sendo tens q (((letra_recebida - 65) + numero_shifts) % 26) + 65
    Isto deve reajustar-te um shift de 'numero_shifts' casas para todo e só o alfabeto.

    Eu tinha isso feito em Haskell...mas eh simples de realizar em qualquer linguagem! Agora parte de ti a codificação!
     
  4. Crepito

    Crepito Power Member

    Eu tive que fazer um trabalho para a disciplina de algoritmia aplicada, sobre isso. Tinhamos um texto e ele encriptava segundo o algoritmo de Vigenere, Vernam e Tabelas de substituicao. Pelo que eu me lembro da materia, o que queres fazer e conhecido como a cifra de Cesar.

    Ate te arranjava, mas o trabalho foi em java. Se googlares n te faltam exemplos. E uma coisa bastante basica de se fazer, pelo menos o que tu queres.


    Ha muitas maneiras de fazer isto.

    Um exemplo em pseudocodigo ( provavelmente com alguns erros de syntax lol ) mt simples:
    Código:
    alpha <- 'abc...z'
    texto <- "abc"
    textocodificado <- ""
    k <- 2 ( o valor que queres que a letra ande )
    
    val <- 0
    
    Do for i = 0 to Length(texto)
    
    / obter a letra do texto
    letra <- sub(texto,i,1)
    
    
    Do for j = 0 to 25
    / encontra a letra no alfabeto
    if letra = sub(alpha,j,1)
    
    / se a soma de j + k for maior que o alfabeto
    if j + k >= 24
    val <- j - 25
    /senao fica o valor de j
    else
    val <- j
    /acrescenta-se a nova letra ao texto codificado
    
    textocodificado <-  textocodificado + sub(alpha, val + 1 + k, 1)
    Isto pode n funcionar mt bem pk fiz a pressa e pode ter alguns valores errados, mas esta base funciona. Pelo menos eu fiz o meu +- assim. Isto so pra encriptar. Para desencriptar e praticamente fazer o inverso.


    Agora e so pensares um kito e adaptares pra linguagem que pretendes. Vai por tentativas ate funcionar lol.


    Boa sorte.
     
    Última edição: 20 de Julho de 2007

Partilhar esta Página