/// <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); } }
/// <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"); } }
/// <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"); // } //} }
/// <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(); } }