Пример #1
0
        /// <summary>
        /// Encripta uma mensagem usando uma chave publica
        /// </summary>
        /// <param name="message"></param>
        /// <param name="EtName"></param>
        /// <returns byte[]></returns>
        public byte[] EncryptToByte(string message, string EtName = null)
        {
            if (String.IsNullOrEmpty(EtName))
            {
                byte[] messageByte           = Encoding.UTF8.GetBytes(message);
                RSACryptoServiceProvider Rsa = new RSACryptoServiceProvider();
                Rsa.ImportParameters(PublicKey);
                return(Rsa.Encrypt(messageByte, true));
            }
            else if (EntidadesGuardadas.Contains(EtName))
            {
                byte[] messageByte = Encoding.UTF8.GetBytes(message);

                Cp = new CspParameters {
                    KeyContainerName = EtName
                };
                RSACryptoServiceProvider Rsa = new RSACryptoServiceProvider(Cp);

                return(Rsa.Encrypt(messageByte, true));
            }
            else
            {
                Console.WriteLine("Não tens a chave publica da entidade " + EtName);
                return(null);
            }
        }
Пример #2
0
        /// <summary>
        /// vai buscar a chave publica de uma entidade ao container
        /// </summary>
        /// <param name="etname"></param>
        public void ShowEntityPublicKey(string EtName)
        {
            if (EntidadesGuardadas.Contains(EtName))
            {
                while (true)
                {
                    Console.Write("\n1 - Numero\n2 - Hex\n");
                    string escolha = Console.ReadLine();

                    if (escolha == "1")
                    {
                        ShowPublicNumber(EtName);
                        break;
                    }
                    else if (escolha == "2")
                    {
                        ShowPublicStr(EtName);
                        break;
                    }
                    else
                    {
                        Console.WriteLine("Comando errado");
                    }
                }
            }
            else
            {
                Console.WriteLine("Não tem a chave publica desta entidade");
            }
        }
Пример #3
0
        /// <summary>
        /// Adiciona uma entidade ao container
        /// </summary>
        /// <param name="EtName"></param>
        /// <param name="PublicKey"></param>
        public void AddEntintyPublicKey(string EtName, RSAParameters EtParameters)
        {
            Cp = new CspParameters {
                KeyContainerName = EtName
            };
            RSACryptoServiceProvider Rsa = new RSACryptoServiceProvider(Cp);

            Rsa.ImportParameters(EtParameters);

            if (!EntidadesGuardadas.Contains(EtName))
            {
                EntidadesGuardadas.Add(EtName);
            }

            //if (!File.Exists(Path))
            //{
            //    File.WriteAllText(Path, EncryptName(EtName) + "\n");
            //    EntidadesGuardadas.Add(EtName);
            //}
            //else if (File.Exists(Path))
            //{
            //    if (!EntidadesGuardadas.Contains(EtName))
            //    {
            //        File.AppendAllText(Path, EncryptName(EtName) + "\n");
            //        EntidadesGuardadas.Add(EtName);
            //    }
            //    else
            //    {
            //        Console.WriteLine("Entidade já se encontra guardada");
            //    }
            //}
        }
Пример #4
0
        /// <summary>
        /// Apaga a key de uma entidade do container
        /// </summary>
        /// <param name="EtName"></param>
        public void DeleteKeyFromContainer(string EtName)
        {
            if (EntidadesGuardadas.Contains(EtName))
            {
                Cp = new CspParameters {
                    KeyContainerName = EtName
                };

                RSACryptoServiceProvider Rsa = new RSACryptoServiceProvider(Cp)
                {
                    PersistKeyInCsp = false
                };
                Rsa.Clear();

                //Caso seja necessário usar ficheiros
                //string[] Entidades = File.ReadAllLines(Path);
                //File.Delete(Path);
                //Entidades = Entidades.Where(val => DecryptName(val) != EtName).ToArray();
                //File.WriteAllLines(Path, Entidades);
                EntidadesGuardadas = EntidadesGuardadas.Where(val => val != EtName).ToList();
            }
        }