View Full Version : Shift Cipher


eagler
20-07-2007, 18:25
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

K0mA
20-07-2007, 19:10
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!

Crepito
20-07-2007, 19:59
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.