2017-05-02 5 views
0

Ich habe den AES-Algorithmus mithilfe dieser Website implementiert. https://msdn.microsoft.com/en-us/library/system.security.cryptography.aesmanaged(v=vs.110).aspxDas Meldungsfeld wird nicht zur Anzeige von Entschlüsselungsdaten angezeigt.

Nach der Verschlüsselung wird der Wert in eine Zeichenfolge konvertiert und an die Datenbank gesendet. was war erfolgreich. Als ich den Wert Verschlüsselter Wert abrief, war das erfolgreich. Aber wenn ich mit der Entschlüsselung beginne, wurde kein Fehler gefunden, und es wurde auch keine Ausgabe angezeigt (Ausgabe über das Nachrichtenfeld erhalten). was soll ich machen?

byte[] cipherbytes = System.Text.ASCIIEncoding.Default.GetBytes(encypted); 
     //AES Decryption start 
     try 
     { 
      using (AesManaged myAes = new AesManaged()) 
      { 
       // Decrypt the bytes to a string. 
       string roundtrip = DecryptStringFromBytes_Aes(cipherbytes, myAes.Key, myAes.IV); 
       //Console.WriteLine("Round Trip: {0}", roundtrip); 
       MessageBox.Show(roundtrip, "Decrypted text"); //this meessage box is not showing 
      } 

     } 
     catch (Exception e) 
     { 
      Console.WriteLine("Error: {0}", e.Message); 
      //MessageBox.Show("Inside is working"); 
     } 

// Hier ist Entschlüsselungs-Algorithmus als auch

static string DecryptStringFromBytes_Aes(byte[] cipherText, byte[] Key, byte[] IV) 
    { 
     // Check arguments. 
     if (cipherText == null || cipherText.Length <= 0) 
      throw new ArgumentNullException("cipherText"); 
     if (Key == null || Key.Length <= 0) 
      throw new ArgumentNullException("Key"); 
     if (IV == null || IV.Length <= 0) 
      throw new ArgumentNullException("IV"); 

     // Declare the string used to hold 
     // the decrypted text. 
     string plaintext = null; 

     // Create an AesManaged object 
     // with the specified key and IV. 
     using (AesManaged aesAlg = new AesManaged()) 
     { 
      aesAlg.Key = Key; 
      aesAlg.IV = IV; 

      // Create a decrytor to perform the stream transform. 
      ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV); 

      // Create the streams used for decryption. 
      using (MemoryStream msDecrypt = new MemoryStream(cipherText)) 
      { 
       using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)) 
       { 
        using (StreamReader srDecrypt = new StreamReader(csDecrypt)) 
        { 

         // Read the decrypted bytes from the decrypting stream 
         // and place them in a string. 
         plaintext = srDecrypt.ReadToEnd(); 
        } 
       } 
      } 

     } 

Antwort

0

Ihr DecryptStringFromBytes_Aes keinen Wert zurückgeben, Sie return plaintext; am Ende hinzufügen sollten. Kompiliert es?

Die MessageBox wird nicht angezeigt, weil ... Es wird nicht zu dieser Zeile, Sie haben und Ausnahme früher im Code (in der DecryptStringFromBytes_Aes Funktion). Setzen Sie einen Haltepunkt in diese Zeile Console.WriteLine("Error: {0}", e.Message); und überprüfen Sie den Fehler. Sie könnten auch die Konsole für den geschriebenen Fehler überprüfen.

+0

return plaintext; hat leider gefehlt. Ich versuche, die Probleme mithilfe der obigen Methode herauszufinden. Ich stelle den Break-Point nach deinem Vorschlag. Aber nichts ist passiert. Wenn ich die Messagbox in catch (Ausnahme e) aktiviere, erscheint das Popup-Fenster. was zeigt, dass eine Ausnahme auftritt. aber immer noch nicht das Problem mit Konsolenfehler finden. –

Verwandte Themen