hey leute,
ich versuche alle zellen einer DataGridView mit aes_encrypt & aes_decrypt zu verschlüsseln & entschlüsseln was auch klappt wenn ich z.b. in die Zelle 123456 eintrage.
wäre super wenn mir hier einer helfen kann weil ich stehe gerade vollkommen auf dem schlauch wieso!?
Versuche ich das z.b. mit HalloVerschlüsselMich dann kommt dieser fehler:
Fehlermeldung:
ungültige länge für base-64-zeichenarray oder -zeichenfolge
Der encrypt und Decrypt code ist folgender:
private string Encrypt(string clearText)
{
string EncryptionKey = "key";
byte[] clearBytes = Encoding.Unicode.GetBytes(clearText);
using (Aes encryptor = Aes.Create())
{
Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
encryptor.Key = pdb.GetBytes(32);
encryptor.IV = pdb.GetBytes(16);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, encryptor.CreateEncryptor(), CryptoStreamMode.Write);
//using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
//{
cs.Write(clearBytes, 0, clearBytes.Length);
cs.Close();
//}
clearText = Convert.ToBase64String(ms.ToArray());
//}
}
return clearText;
}
//}
private string Decrypt(string cipherText)
{
string EncryptionKey = "key";
byte[] cipherBytes = Convert.FromBase64String(cipherText);
using (Aes encryptor = Aes.Create())
{
Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
encryptor.Key = pdb.GetBytes(32);
encryptor.IV = pdb.GetBytes(16);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, encryptor.CreateDecryptor(), CryptoStreamMode.Write);
cs.Write(cipherBytes, 0, cipherBytes.Length);
cs.Close();
cipherText = Encoding.Unicode.GetString(ms.ToArray());
}
return cipherText;
}
Ich kann mich irren, aber der Fehler wird vermutlich (hier müssen wir raten, weil du uns diese Information vorenthältst) von dieser Zeile hier ausgelöst:
byte[] cipherBytes = Convert.FromBase64String(cipherText);
Ist, wenn ich nix übersehe, auch die einzige Zeile, die genau diesen Fehler bringen kann. Die Methode erwartet eine gültige Base64-Zeichenkette. Die Länge muss eine durch 3 teilbare Zahl sein, ist sie es nicht, werden hinten ein oder zwei Gleichheitszeichen angehängt, damit sie es wird. Offenbar ist dies in deinem Versuch nicht der Fall, weshalb der Fehler kommt.
Anders als von dir dargestellt wäre das aber in der Decrypt-Methode, nicht in der Encrypt-Methode. Wie gesagt, wir raten hier etwas.
LaTino
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)
Danke für deine Nachricht
Welche infos genau brauchst du?
Den code vom datagridview?
Den Stacktrace deiner Ausnahme. Andererseits, wenn du den hast, kannst du das Problem auch selbst eingrenzen...
LaTino
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)
Mir ist gerade aufgefallen es lässt sich jeder text decrypten solange es die erste value in der zelle ist, sobald ich mehrere zellen mit text einfüge kommt der fehler aber komme gerade echt nicht darauf wie ich das fixxen kann.
Encrypt:
Fehlermeldung:
bei Customer_management.Logtxt.Encrypt(String clearText)
bei Customer_management.Logtxt.Add(String Kundenname, String Game, String Bezahlung, String Bezahlt, String Erledigt, String PayPalEmail, String ACCEmail, String ACCPW)
bei Customer_management.Logtxt.Schreibenbtn_Click(Object sender, EventArgs e)
bei System.Windows.Forms.Control.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
bei System.Windows.Forms.Button.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
bei System.Windows.Forms.Application.Run(Form mainForm)
bei Customer_management.Program.Main()
Decrypt:
Fehlermeldung:
bei Customer_management.Logtxt.Decrypt(String cipherText)
bei Customer_management.Logtxt.Decrypting()
bei Customer_management.Logtxt.Retrieve()
bei Customer_management.Logtxt.Add(String Kundenname, String Game, String Bezahlung, String Bezahlt, String Erledigt, String PayPalEmail, String ACCEmail, String ACCPW)
bei Customer_management.Logtxt.Schreibenbtn_Click(Object sender, EventArgs e)
bei System.Windows.Forms.Control.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
bei System.Windows.Forms.Button.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
bei System.Windows.Forms.Application.Run(Form mainForm)
bei Customer_management.Program.Main()
Hi,
die ganze Wahrheit kann das in meinen Augen nicht sein 😕
Die von dir genannte Fehlermeldung kann eigentlich nur in der Decrypt-Methode ausgelöst werden, wo ich selbst vermutlich suchen würde, ob in irgendeiner Form der Output der "Encrypt"-Methode geändert wurde.
Also gäbe es meinerseits 2 Fragen:
Welche Fehlermeldung wird in der ersten Methode ausgelöst?
(Bei einem Test meinerseits sind Linebreaks, Prozentzeichen, etc. kein Problem)
Was passiert nachdem die Encrypt-Methode was ausspuckt so alles mit dem Output?
LG