Criptografia Cifra de César em C#

Fala Galera…

Hoje vou apresentar para vocês umas das formas de criptografias mais importantes já usadas na história, a chamada ‘Cifra de César’, usando o C# para demonstrar as aplicações, vou mostrar o exemplo em Console Application e em Windows Form. É muito simples, más antes vamos falar um pouquinho sobre a história desse tipo de criptografia.

Em criptografia, a Cifra de César, também conhecida como cifra de troca, código de César ou troca de César, é uma das mais simples e conhecidas técnicas de criptografia. É um tipo de cifra de substituição na qual cada letra do texto é substituída por outra, que se apresenta no alfabeto abaixo dela um número fixo de vezes. Por exemplo, com uma troca de três posições, A seria substituído por D, B se tornaria E, e assim por diante. O nome do método é em homenagem a Júlio César, que o usou para se comunicar com os seus generais.

O processo de criptografia de uma cifra de César é frequentemente incorporado como parte de esquemas mais complexos, como a cifra de Vigenère, e continua tendo aplicações modernas, como no sistema ROT13. Como todas as cifras de substituição monoalfabéticas, a cifra de César é facilmente decifrada e na prática não oferece essencialmente nenhuma segurança na comunicação.

Para quem quiser ler mais aqui tem a fonte: http://pt.wikipedia.org/wiki/Cifra_de_César

Primeiro vamos a aplicação em Console Application

Lembrando que para deixar a aplicação um pouco mais apresentável eu coloquei uma ‘perfumaria’ na tela, que pode ser totalmente trocada se você quiser…

Vamos ao código comentado do Console Application com os comentários no código:

namespace Crypto_Cesar
{
class Program
{
static void Main(string[] args)
{

//declaração das variáveis
string palavra, encrypt = "";

//Esta é a perfumaria que eu falei...
//método write escreve na tela do prompt do usuario
Console.Write("|---------------------------------|\n");
Console.Write("| 1 - Criptografar um mensagem    |\n");
Console.Write("| 2 - Decriptografar uma mensagem |\n");
Console.Write("| 0 - Sair                        |\n");
Console.Write("|---------------------------------|\n");
Console.Write(" Escolha a opçao: ");

//Aqui é feito uma conversão, pois o opcao é inicialmente uma string
int opcao = int.Parse(Console.ReadLine());

//depois da conversão o switch verifica a opcao digitada
switch (opcao)

{

//caso a opcao seja 1
case 1: Console.Write("Entre com a mensagem para ser criptografada: ");

//palavra é a variavel que o usuario vai digitar
//O método .ToLower() transforma qualquer letra maiúscula em minúscula
palavra = Console.ReadLine().ToLower();

//enquanto a palavra for menor que i
for (int i = 0; i < palavra.Length; i++)

{
//Devolve o codigo ASCII da letra
int ASCII = (int)palavra[i];

//Coloca a chave fixa adicionando 10 posições no numero da tabela ASCII
int ASCIIC = ASCII + 10;

//Concatena o texto e o coloca na variável
encrypt += Char.ConvertFromUtf32(ASCIIC);
}

//Mostra o resultado final, concatenando a variável em que está o texto cifrado
Console.Write("Resultado: " + encrypt);

//Aguarda o usuário pressionar uma tecla para sair
Console.ReadKey();

//representa o final do case 1
break;

//caso a opcao escolhida for 2
case 2: Console.Write("Entre com a mensagem para ser decriptografada: ");

palavra = Console.ReadLine().ToLower();

for (int i = 0; i < palavra.Length; i++)

{

int ASCII = (int)palavra[i];

//Coloca a chave fixa retirando 10 posições no numero da tabela ASCII
int ASCIIC = ASCII - 10;

encrypt += Char.ConvertFromUtf32(ASCIIC);

}

Console.Write(encrypt);

Console.ReadKey();

break;

}

}

}

}

Agora vamos para a aplicação em Windows Forms

Como podem notar, eu usei:

3 Labels com a propriedade Text, com o nome dos campos

3 Text Box com a propriedade de múltiplas linhas ativas e com as seguintes (Name): txtBoxEncriptar, txtBoxDecriptar, txtBox lembrando que a sequencia está de cima para baixo

2 Buttons: Criptografar, (Name): btn_Encrypt || Decriptografar, (Name): btn_Decrypt

Vamos ao código do Form comentado também:


private void btn_Encrypt_Click(object sender, EventArgs e)

{

//limpar a box de decrypt
txtBoxDecriptar.Text = string.Empty;

//Intera todas as letra do texto puro
for (int i = 0; i < txtBoxEncriptar.Text.Length; i++)

{

//Devolve o código ASCII da letra
int ASCII = (int)txtBoxEncriptar.Text[i];

//Coloca a chave fixa de 10 posições a mais no número da tabela ASCII
int ASCIIC = ASCII + 10;

//Concatena o texto na caixa de texto do texto crifrado
txtBoxDecriptar.Text += Char.ConvertFromUtf32(ASCIIC);

}

}

Segue uma imagem para de exemplo

Agora vamos ao código de decriptar


private void btn_Decrypt_Click(object sender, EventArgs e)

{

//Limpa a caixa de texto
txtBox.Text = string.Empty;

//Intera todas as letras do texto cifrado
for (int i = 0; i < txtBoxDecriptar.Text.Length; i++)

{

//Devolve o código ASCII da letra
int ASCII = (int)txtBoxDecriptar.Text[i];

//Coloca a chave fixa de 10 posições a menos no número da tabela ASCII
int ASCIIC = ASCII - 10;

//Concatena o texto na caixa de texto do texto decifrado
txtBox.Text += Char.ConvertFromUtf32(ASCIIC);

}

}

Segue a imagem de exemplo do Decrypt

Bem pessoal, por hoje é isso.

Lembrando que esse método de criptografia não é mais usado por motivos óbvios né… Não existe segurança alguma neste método, más até que da para brincar com isso um pouquinho xD

Até mais galera.

About these ads
Publicado em Programação C#
4 comments on “Criptografia Cifra de César em C#
  1. Rodrigo disse:

    Estou elaborando um Trabalho para faculdade que exige exatamente isso… muito obrigado pela explicação, está tudo como eu realmente preciso e foi de fácil entendimento, parabéns!!!

  2. GuGa Monteiro disse:

    Precisava do codigo para cifra de substituição, não tens nenhum exemplo por ai?

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Arquivos
%d blogueiros gostam disto: