Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Verschlüsselung als Klasse?!
ZeroQool
myCSharp.de - Member



Dabei seit:
Beiträge: 322

Themenstarter:

Verschlüsselung als Klasse?!

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo ZeroQool,

naja, die Fehlermeldung ist doch recht eindeutig. Hast du dir den String mal angeguckt?

herbivore
private Nachricht | Beiträge des Benutzers
ZeroQool
myCSharp.de - Member



Dabei seit:
Beiträge: 322

Themenstarter:

beantworten | zitieren | melden

Ja, habe ich
Zitat
Server=localhost;Database=Northwind;UID=sa;PWD=sa
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo ZeroQool,

naja, das ist ja ein "normaler" String und kein Base64-String. Meinst du vielleicht ToBase64String statt FromBase64String?

herbivore
private Nachricht | Beiträge des Benutzers
ZeroQool
myCSharp.de - Member



Dabei seit:
Beiträge: 322

Themenstarter:

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
typhos
myCSharp.de - Member



Dabei seit:
Beiträge: 243

beantworten | zitieren | melden

Zitat
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...
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo ZeroQool,
Zitat
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
private Nachricht | Beiträge des Benutzers
ZeroQool
myCSharp.de - Member



Dabei seit:
Beiträge: 322

Themenstarter:

beantworten | zitieren | melden

Hallo herbivore
Zitat
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.
private Nachricht | Beiträge des Benutzers