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
Vê lá se isto (http://www.techzonept.com/showthread.php?t=167063&highlight=Shift+Cipher) ajuda.
LaNgSuYaR
20-07-2007, 19:24
é 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!
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:
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.