Logo Hardware.com.br
Bruno Cocchi
Bruno Cocchi Novo Membro Registrado
8 Mensagens 0 Curtidas

Trabalho de Criptografia RSA em C#.

#1 Por Bruno Cocchi 19/11/2018 - 23:18
Olá a todos!

Estou cursando Ciência da Computação, primeiro semestre e me foi dado um trabalho para entregar até dia 27, ele basicamente diz para que eu ache um código de criptografia RSA em C# e depois explique-o linha por linha (ou bloco por Bloco), de forma que até quem não conheça o código consiga entender durante a apresentação

Acontece que sou bem iniciante na área da programação, achei o código, está rodando perfeitamente, porém não sei explicar praticamente nada sobre ele, poderiam me ajudar? Explicar o que cada linha/bloco de comando faz e uma explicação geral do programa todo? Obrigado à todos.

Segue o código:
[code=csharp]using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Security.Cryptography;
using Timer = System.Timers.Timer;
using System.IO;
using System.Xml.Serialization;

namespace RSAA
{
public class RsaEnc
{
private static RSACryptoServiceProvider csp = new RSACryptoServiceProvider(2048);
private RSAParameters _privateKey;
private RSAParameters _publicKey;

public RsaEnc()
{
_privateKey = csp.ExportParameters(true);
_publicKey = csp.ExportParameters(false);
}

public string PublicKeySring()
{
var sw = new StringWriter();
var xs = new XmlSerializer(typeof(RSAParameters));
xs.Serialize(sw, _publicKey);
return sw.ToString();
}
public string Encrypt(string plainText)


{
csp = new RSACryptoServiceProvider();
csp.ImportParameters(_publicKey);

var data = Encoding.Unicode.GetBytes(plainText);
var cypher = csp.Encrypt(data, false);
return Convert.ToBase64String(cypher);
}
public string Decrypt(string cypherText)
{
var dataBytes = Convert.FromBase64String(cypherText);
csp.ImportParameters(_privateKey);
var plaintext = csp.Decrypt(dataBytes, false);
return Encoding.Unicode.GetString(plaintext);
}
}
class Program
{

static void Main(string[] args)
{
RsaEnc rs = new RsaEnc();
string cypher = String.Empty;
Console.WriteLine($"Chave Publica: \n {rs.PublicKeySring()}\n");

Console.WriteLine("Entre com o texto para Encriptar");
var text = Console.ReadLine();
if (text != String.Empty)
{
cypher = rs.Encrypt(text);
Console.WriteLine($"Texto Encriptado:\n {cypher} \n");

}
Console.WriteLine("Pressione enter para Decriptar");
Console.ReadLine();
var plainText = rs.Decrypt(cypher);
Console.WriteLine("Texto Decriptado:\n");
Console.WriteLine(plainText);
Console.ReadLine();

}
}
}[/code]
Francisco Ossian
Francisco Os... Super Participante Registrado
221 Mensagens 68 Curtidas
#2 Por Francisco Os...
19/11/2018 - 23:30
Assim, explicar sobre o código é o seu trabalho, se não sabe entender o código, procure entender primeiro as tecnologias e conceitos que esse código utiliza. É um processo em cascata.

Se nunca estudou programação orientada a objetos é melhor começar. Apenas a teoria dela mesmo, sem focar em uma linguagem.
Classes, métodos, atributos, instanciamento de um objeto etc. Estudar isso já tendo uma base boa de logica de programação.

Depois que tudo estiver ok, você pode estudar a linguagem e aprofundar seu estudo nesse algorítimo para saber ter uma explicação mais clara e consistente.
Bruno Cocchi
Bruno Cocchi Novo Membro Registrado
8 Mensagens 0 Curtidas
#3 Por Bruno Cocchi
20/11/2018 - 00:00
Francisco Ossian disse:
Assim, explicar sobre o código é o seu trabalho, se não sabe entender o código, procure entender primeiro as tecnologias e conceitos que esse código utiliza. É um processo em cascata.

Se nunca estudou programação orientada a objetos é melhor começar. Apenas a teoria dela mesmo, sem focar em uma linguagem.
Classes, métodos, atributos, instanciamento de um objeto etc. Estudar isso já tendo uma base boa de logica de programação.

Depois que tudo estiver ok, você pode estudar a linguagem e aprofundar seu estudo nesse algorítimo para saber ter uma explicação mais clara e consistente.


- Então amigão, meu trabalho é sair do 0 pra algo, estamos estudando C# e meu dever é aprender um código sobre Criptografia em RSA utilizando o C#, vim aqui pois acho mais produtivo já desde o inicio a explicação de alguém que realmente entenda do que ficar pesquisando e possivelmente tirar conclusões erradas sobre o assunto. Obrigado.
TRONNER
TRONNER Cyber Highlander Registrado
32.2K Mensagens 7.3K Curtidas
#5 Por TRONNER
20/11/2018 - 08:56
Bruno Cocchi disse:
- Então amigão, meu trabalho é sair do 0 pra algo, estamos estudando C# e meu dever é aprender um código sobre Criptografia em RSA utilizando o C#, vim aqui pois acho mais produtivo já desde o inicio a explicação de alguém que realmente entenda do que ficar pesquisando e possivelmente tirar conclusões erradas sobre o assunto. Obrigado.

Quantas aulas você teve sobre o tema ?!
O professor passou ou sugeriu algum material para ter como base ?!
Desculpa a desconfiança mas é uma atividade aplicada de maneira estranha quando você não tem qualquer inrodução sobre o assunto, seria o mesmo por exemplo que pedir para eu explicar um código SQL sem conhecer o que é DML ou DDL .. não faz sentido.
cool.png**Quando pensar ser um Golias, cuidado para não encontrar algum Davi**
veja.png Conheça os Poderosos e Gratuitos [ Iperius Backup ] e [ Iperius Remote ]
veja.png Todo dia um software novo e grátis [ clicando aqui ]
boa.gif Faça valer a sua voz com o Mudamos+ { https://www.mudamos.org }
Bruno Cocchi
Bruno Cocchi Novo Membro Registrado
8 Mensagens 0 Curtidas
#6 Por Bruno Cocchi
20/11/2018 - 13:57
esquiloesperto disse:
- Para abreviar esforços, poderia enumerar os pontos que já consegue explicar?

Depois disso, exponha em forma de lista as partes que ainda não consegue explanar.
Isto facilitaria para todos.


O que eu entendo é a parte mais teórica mesmo, o programa em si que não consigo fazer uma boa explicação
Por exemplo, na teoria sei o que são os metodos, os arrays, o console.writeline, a criação de variavel, coisa bem inicial mesmo, acontece que seguindo o meu conhecimento, não sei explicar o passo a passo do programa para o professor em sala de aula.

Resumidamente, eu acho que não deu tempo do professor passar o que ele queria exatamente, então deixou esse trabalho pra nós mesmo aprendermos sozinhos antes das férias, porém meu inglês ainda não está fluente eu só achei gente fazendo o código em inglês, o que dificultou um pouco mais eu aprender a explicação para passar para a sala.

TRONNER disse:
Quantas aulas você teve sobre o tema ?!
O professor passou ou sugeriu algum material para ter como base ?!
Desculpa a desconfiança mas é uma atividade aplicada de maneira estranha quando você não tem qualquer inrodução sobre o assunto, seria o mesmo por exemplo que pedir para eu explicar um código SQL sem conhecer o que é DML ou DDL .. não faz sentido.


Assim, estou tendo uma matéria sobre C#, mas ainda estamos no básico, aprendi o que são os metodos, arrays, variaveis, comandos com loop e etc. Agora no final do semestre ele passou um trabalho em grupo onde cada um deveria fazer uma parte, meu grupo ficou com o método de criptografia em RSA, onde um deveria explicar os conceitos, outro deveria mostrar onde ele é usado e um deveria ficar por entender o código utilizado e explicar em sala de aula, fiquei com essa parte porém não consigo fazer isso. Não gostaria de deixar minha equipe na mão
TRONNER
TRONNER Cyber Highlander Registrado
32.2K Mensagens 7.3K Curtidas
#7 Por TRONNER
20/11/2018 - 17:09
Bruno Cocchi disse:
[...]Assim, estou tendo uma matéria sobre C#, mas ainda estamos no básico, aprendi o que são os metodos, arrays, variaveis, comandos com loop e etc. Agora no final do semestre ele passou um trabalho em grupo onde cada um deveria fazer uma parte, meu grupo ficou com o método de criptografia em RSA, onde um deveria explicar os conceitos, outro deveria mostrar onde ele é usado e um deveria ficar por entender o código utilizado e explicar em sala de aula, fiquei com essa parte porém não consigo fazer isso. Não gostaria de deixar minha equipe na mão

Embora puxado, sendo uma equipe a comunicação continua sendo o melhor caminho e por isso indispensável conversar com eles pois na busca das outras condições, é quase certo deles terem encontrado o que precisa e vocês trocarem conhecimento em prol do trabalho ser concluído a tempo.
cool.png**Quando pensar ser um Golias, cuidado para não encontrar algum Davi**
veja.png Conheça os Poderosos e Gratuitos [ Iperius Backup ] e [ Iperius Remote ]
veja.png Todo dia um software novo e grátis [ clicando aqui ]
boa.gif Faça valer a sua voz com o Mudamos+ { https://www.mudamos.org }
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal