Hallo, habe die Suchf. bereits genutzt, aber nichts passendes gefunden. Muss auch am Anfang sagen, dass ich mit c# erst diese Woche begonnen habe.
Ich habe folgende Schnipsel
private SymmetricAlgorithm SetEnc()
{
if (optDES.Checked)
return new DESCryptoServiceProvider();
else
return new TripleDESCryptoServiceProvider();
}
private SymmetricAlgorithm mCSP;
private void btnKeyGen_Click(object sender, EventArgs e)
{
mCSP = SetEnc();
mCSP.GenerateKey();
txtKey.Text = Convert.ToBase64String(mCSP.Key);
}
private void btnIVGen_Click(object sender, EventArgs e)
{
mCSP.GenerateIV();
txtIV.Text = Convert.ToBase64String(mCSP.IV);
}
private void cmdEncrypt_Click(object sender, EventArgs e)
{
txtEncrypted.Text = EncryptString(txtOriginal.Text);
}
private string EncryptString(string Value)
{
ICryptoTransform ct;
MemoryStream ms;
CryptoStream cs;
byte[] byt;
ct = mCSP.CreateEncryptor(mCSP.Key, mCSP.IV);
byt = Encoding.UTF8.GetBytes(Value);
ms = new MemoryStream();
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
cs.Write(byt, 0, byt.Length);
cs.FlushFinalBlock();
cs.Close();
return Convert.ToBase64String(ms.ToArray());
}
private void button1_Click(object sender, EventArgs e)
{
txtEncrypted.Text = EncryptString(txtOriginal.Text);
}
Das funktioniert wunderbar. ich kann die 2 Schlüssel erstellen u damit ver-u. entschlüsseln, aber nun wollte ich die Verschlüsselung in einer Klasse packen und von einem anderen Formular imgrunde aufrufen, aber ich habe immer eine Fehlermeldung.
Meine erstellte Klasse:
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.ComponentModel;
using System.Security.Cryptography;
using System.IO;
namespace eBayAPI_Server
{
public class Verschluesselung
{
public const string cKey = "OXc9OQSZNXMWwE2VehLdfjSrwAH+uMH/";
public const string cKeyIV = "qxPc+5RGqeE=";
private static SymmetricAlgorithm mCSP;
//public SymmetricAlgorithm SetEnc()
//{
// return new TripleDESCryptoServiceProvider();
//}
public static string DecryptStringKlasse(string Value)
{
SymmetricAlgorithm SetEnc = TripleDESCryptoServiceProvider.Create();
mCSP = SetEnc;
mCSP.Key = Convert.FromBase64String(cKey);
mCSP.IV = Convert.FromBase64String(cKeyIV);
ICryptoTransform ct;
MemoryStream ms;
CryptoStream cs;
byte[] byt;
ct = mCSP.CreateDecryptor(mCSP.Key, mCSP.IV);
byt = Convert.FromBase64String(Value); // HIER HABE ICH EINE FEHLERMELDUNG (Ungültige Zeichen in einer Base-64-Zeichenfolge.)
ms = new MemoryStream();
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
cs.Write(byt, 0, byt.Length);
cs.FlushFinalBlock();
cs.Close();
return Encoding.UTF8.GetString(ms.ToArray());
}
}
}
FEHLER:
byt = Convert.FromBase64String(Value); // HIER HABE ICH EINE FEHLERMELDUNG (Ungültige Zeichen in einer Base-64-Zeichenfolge.)
weiß jemand wa sich falsch mache? big thx im voraus.
Hallo ZeroQool,
naja, die Fehlermeldung ist doch recht eindeutig. Hast du dir den String mal angeguckt?
herbivore
Hallo ZeroQool,
naja, das ist ja ein "normaler" String und kein Base64-String. Meinst du vielleicht ToBase64String statt FromBase64String?
herbivore
Sollte eigentlich richtig sein, wie gesagt, wenn ich die ganzen Funktionen in meinem Formular habe klappt alles, nur nicht wenn ich die Funktionen ect. in eine Klasse packe dann gehts nicht.
Original von ZeroQool
Sollte eigentlich richtig sein, wie gesagt, wenn ich die ganzen Funktionen in meinem Formular habe klappt alles, nur nicht wenn ich die Funktionen ect. in eine Klasse packe dann gehts nicht.
Ist es aber nicht! FromBase64String erwartet als Parameter einen String, der bereits base64-verschlüsselt ist. Der String "Server=localhost;Database=Northwind;UID=sa;PWD=sa" ist aber nicht verschlüsselt.
Wenn Du diesen String aber verschlüsseln möchtest, musst Du die Methode ToBase64String anwenden...
Hallo ZeroQool,
Sollte eigentlich richtig sein, wie gesagt, wenn ich die ganzen Funktionen in meinem Formular habe klappt alles, nur nicht wenn ich die Funktionen ect. in eine Klasse packe dann gehts nicht.
daran kann es aber nicht liegen, außer du hast falsch gepackt (sprich beim Rüberschieben in die andere Klasse einen Fehler gemacht).
herbivore
Hallo herbivore
daran kann es aber nicht liegen, außer du hast falsch gepackt (sprich beim Rüberschieben in die andere Klasse einen Fehler gemacht).
Daran denke ich kann es auch nicht liegen. Beim Kopieren/bzw verschieben habe ich auch ncihts falsch gemacht. Schon mehrmals überprüfen.