private void btnTextoSalvar_Click(object sender, RoutedEventArgs e) { if (textoCifrado.Text.Length == 0) { System.Windows.MessageBox.Show("Não há texto criptografado para ser salvo!", "Erro"); } else if (!Directory.Exists(edtCaminhoTrocaMensagem.Text)) { System.Windows.MessageBox.Show("Diretório de troca de mensagens não encontrado!", "Erro"); } else { string arquivo = ""; ManipulacaoArquivo manipulacaoarquivo = new ManipulacaoArquivo(rsaBits); manipulacaoarquivo.getNomeArquivoMensagemCriptografadaNovo(ref arquivo, edtCaminhoTrocaMensagem.Text); if (arquivo != "") { manipulacaoarquivo.salvarConteudoEmArquivo(arquivo, textoCifrado.Text); System.Windows.MessageBox.Show("Texto copiado com sucesso em " + arquivo, "Gravação em disco"); } } }
private void btnCifrar_Click(object sender, RoutedEventArgs e) { try { ManipulacaoArquivo manipulacaoarquivo = new ManipulacaoArquivo(rsaBits); if (textoOriginal.Text.Length == 0 || this.textoOriginal.Text.Length > this.tamanhoTexto) { throw new ArgumentException("Digite uma mensagem de até " + tamanhoTexto.ToString() + " caracteres!"); } if (!Directory.Exists(edtCaminhoRepositorio.Text)) { throw new ArgumentException("Não foi encontrado o caminho do repositório de chaves públicas: " + edtCaminhoRepositorio.Text); } string arquivoChavePublica = ""; manipulacaoarquivo.getNomeArquivoChavePublica(edtCaminhoRepositorio.Text, ref arquivoChavePublica); if (arquivoChavePublica != "") { Cursor = System.Windows.Input.Cursors.Wait; btnCifrar.Content = "Aguarde..."; btnCifrar.IsEnabled = false; System.Windows.Forms.Application.DoEvents(); // Libera Mensagens do processamento do Windows string xmlChavePublica = manipulacaoarquivo.carregarConteudo(arquivoChavePublica); if (xmlChavePublica != "") { string bitsString = xmlChavePublica.Substring(0, xmlChavePublica.IndexOf("</RSABits>") + 10); xmlChavePublica = xmlChavePublica.Replace(bitsString, ""); // Limpando parte da sring int bits = Convert.ToInt32(bitsString.Replace("<RSABits>", "").Replace("</RSABits>", "")); UtilizacaoRSA rsa = new UtilizacaoRSA(bits); rsa.mensagem = textoOriginal.Text; rsa.xmlChave = xmlChavePublica; textoCifrado.Text = rsa.Cifrar(); textoOriginal.Text = ""; } } } catch (Exception E) { System.Windows.MessageBox.Show(E.Message, "Erro"); } finally { Cursor = System.Windows.Input.Cursors.Arrow; btnCifrar.Content = "Cifrar >>"; btnCifrar.IsEnabled = true; } }
private void btnTextoCarregar_Click(object sender, RoutedEventArgs e) { if (!Directory.Exists(edtCaminhoTrocaMensagem.Text)) { System.Windows.MessageBox.Show("Diretório de troca de mensagens não encontrado!", "Erro"); } else { string arquivo = ""; ManipulacaoArquivo manipulacaoarquivo = new ManipulacaoArquivo(rsaBits); manipulacaoarquivo.getNomeArquivoMensagemCriptografadaExistente(ref arquivo, edtCaminhoTrocaMensagem.Text); if (arquivo != "") { textoCifrado.Text = manipulacaoarquivo.carregarConteudo(arquivo); textoOriginal.Text = ""; } } }
private void btnDecifrar_Click(object sender, RoutedEventArgs e) { try { if (!Directory.Exists(edtCaminhoRepositorio.Text)) { throw new Exception("Diretório do caminho do repositório não foi encontrado!"); } ManipulacaoArquivo manipulacaoarquivo = new ManipulacaoArquivo(rsaBits); if (textoCifrado.Text.Length == 0) { System.Windows.MessageBox.Show("Cole ou carrege algum texto cifrado!", "Erro"); } else { string arquivo = ""; manipulacaoarquivo.getNomeArquivoChavePrivadaExistente(ref arquivo); if (arquivo != "") { Cursor = System.Windows.Input.Cursors.Wait; btnDecifrar.Content = "Aguarde..."; btnDecifrar.IsEnabled = false; System.Windows.Forms.Application.DoEvents(); // Libera Mensagens do processamento do Windows string xmlChavePrivada = manipulacaoarquivo.carregarConteudo(arquivo); if (xmlChavePrivada != "") { string bitsString = xmlChavePrivada.Substring(0, xmlChavePrivada.IndexOf("</RSABits>") + 10); xmlChavePrivada = xmlChavePrivada.Replace(bitsString, ""); // Limpando parte da sring int bits = Convert.ToInt32(bitsString.Replace("<RSABits>", "").Replace("</RSABits>", "")); UtilizacaoRSA rsa = new UtilizacaoRSA(bits); rsa.mensagem = textoCifrado.Text; rsa.xmlChave = xmlChavePrivada; textoOriginal.Text = rsa.Decifrar(); textoCifrado.Text = ""; } } } } catch (Exception E) { this.textoOriginal.Text = ""; System.Windows.MessageBox.Show(E.Message, "Erro"); } finally { Cursor = System.Windows.Input.Cursors.Arrow; btnDecifrar.Content = "<< Decifrar"; btnDecifrar.IsEnabled = true; } }
private void btnGerarChavePrivada_Click(object sender, RoutedEventArgs e) { try { ManipulacaoArquivo manipulacaoarquivo = new ManipulacaoArquivo(rsaBits); if (!Directory.Exists(edtCaminhoRepositorio.Text)) { throw new Exception("Diretório do caminho do repositório não foi encontrado!"); } string mensagem = ""; bool continuarProcesso = true; if (rsaBits == 4096) { mensagem = "A chave será gerada com tamanho de " + rsaBits.ToString() + " bits!\n" + "Este processo poderá levar alguns segundos.\n" + "Deseja criar nova chave privada?"; } else if (rsaBits == 6144) { mensagem = "A chave será gerada com tamanho de " + rsaBits.ToString() + " bits!\n" + "Este processo poderá levar alguns minutos.\n" + "Deseja criar nova chave privada?"; } // se a chave for mais exigir mais tempo pra ser gerada, fazer uma pergunta anterior if (mensagem != "") { continuarProcesso = System.Windows.MessageBox.Show(mensagem, "Confirmação", System.Windows.MessageBoxButton.YesNo) == System.Windows.MessageBoxResult.Yes; } if (continuarProcesso) { // nome e path do arquivo onde será gravado cada chave string arquivoChavePrivada = ""; string arquivoChavePublica = ""; // contém o XML das chaves string chavePrivada = ""; string chavePublica = ""; UtilizacaoRSA rsa = new UtilizacaoRSA(rsaBits); manipulacaoarquivo.getNomeArquivoChavePrivadaNovo(ref arquivoChavePrivada); // Selecionar novo Arquivo de chave Privada if (arquivoChavePrivada != "") { // Alimentar a variável para apontar onde deve ser gravado a chave Pública arquivoChavePublica = System.IO.Path.ChangeExtension(arquivoChavePrivada, "pub"); // trocando a extensão arquivoChavePublica = System.IO.Path.GetFileName(arquivoChavePublica); // nome do arquivo sem o path arquivoChavePublica = edtCaminhoRepositorio.Text + System.IO.Path.DirectorySeparatorChar + arquivoChavePublica; // Novo Caminho Cursor = System.Windows.Input.Cursors.Wait; btnGerarChavePrivada.Content = "Aguarde..."; btnGerarChavePrivada.IsEnabled = false; System.Windows.Forms.Application.DoEvents(); // Libera Mensagens do processamento do Windows try { rsa.gerarChavePublicaePrivada(ref chavePrivada, ref chavePublica); manipulacaoarquivo.salvarConteudoEmArquivo(arquivoChavePrivada, chavePrivada); // salvando chave privada no disco removível manipulacaoarquivo.salvarConteudoEmArquivo(System.IO.Path.ChangeExtension(arquivoChavePrivada, "pub"), chavePublica); // salvando chave pública no disco removível (backup) manipulacaoarquivo.salvarConteudoEmArquivo(arquivoChavePublica, chavePublica); // salvando chave pública no repositório System.Windows.MessageBox.Show("Chaves pública e privada foram geradas e gravadas com sucesso!\n" + "Atenção: A chave privada deve ser mantida em segurança. Esta em hipótese alguma deve ser divulgada.", "Gravação Ok"); } catch (Exception E) { System.Windows.MessageBox.Show(E.Message, "Erro"); } finally { this.Cursor = System.Windows.Input.Cursors.Arrow; } btnGerarChavePrivada.IsEnabled = true; btnGerarChavePrivada.Content = "Chave Privada"; } } } catch (Exception E) { System.Windows.MessageBox.Show(E.Message, "Erro"); } }