none
Trabalho de Criptografia RSA em C# RRS feed

  • Discussão Geral

  • 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:

    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();

            }
        }
    }


    segunda-feira, 19 de novembro de 2018 17:26