2016-12-19 2 views
-1

Ich habe eine WinForms App, an der ich gerade arbeite, im Moment habe ich einige Daten, die ich mit Formularen/Listboxen/Textfeldern erstelle, diese Daten werden dann mit einem Verschlüsselungspasswort in eine Textdatei verschlüsselt .C# WinForms Verschlüsselung mit einem Passwort

Ich habe das alles funktioniert reibungslos und fantastisch, ich wollte nur wissen, ob mit dieser Methode sicher ist, wie in einer Text-Datei mit dieser Verschlüsselungsmethode (TripleDES Algorithmus) sichern ist:

 //Encryption Method 
     public string EncryptString(string Message, string Passphrase) 
    { 
     byte[] Results; 
     System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding(); 
     MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider(); 
     byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes(Passphrase)); 
     TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider(); 
     TDESAlgorithm.Key = TDESKey; 
     TDESAlgorithm.Mode = CipherMode.ECB; 
     TDESAlgorithm.Padding = PaddingMode.PKCS7; 
     byte[] DataToEncrypt = UTF8.GetBytes(Message); 
     try 
     { 
      ICryptoTransform Encryptor = TDESAlgorithm.CreateEncryptor(); 
      Results = Encryptor.TransformFinalBlock(DataToEncrypt, 0, DataToEncrypt.Length); 
     } 
     finally 
     { 
      TDESAlgorithm.Clear(); 
      HashProvider.Clear(); 
     } 
     return Convert.ToBase64String(Results); 
    } 


    //Decryption Method 
    public string DecryptString(string Message, string Passphrase) 
    { 
     byte[] Results; 
     System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding(); 
     MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider(); 
     byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes(Passphrase)); 
     TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider(); 
     TDESAlgorithm.Key = TDESKey; 
     TDESAlgorithm.Mode = CipherMode.ECB; 
     TDESAlgorithm.Padding = PaddingMode.PKCS7; 
     byte[] DataToDecrypt = Convert.FromBase64String(Message); 
     try 
     { 
      ICryptoTransform Decryptor = TDESAlgorithm.CreateDecryptor(); 
      Results = Decryptor.TransformFinalBlock(DataToDecrypt, 0, DataToDecrypt.Length); 
     } 
     finally 
     { 
      TDESAlgorithm.Clear(); 
      HashProvider.Clear(); 
     } 
     return UTF8.GetString(Results); 
    } 
+0

Frage sollte besser geeignet in Codereview Stack sein – Alejandro

Antwort