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
RSA Fehler: Ungültige Daten
BangerzZ
myCSharp.de - Member



Dabei seit:
Beiträge: 44

Themenstarter:

RSA Fehler: Ungültige Daten

beantworten | zitieren | melden

Hallo,

Ich versuche gerade RSA zu Authentifizierung auf meinem Server zu nutzen und erstelle dafür XML Dateien in den der öffentlich und private Schlüssel ist. (RSACryptoProviderService.ToXmlString())

Mein Problem ist, das ich beim entschlüsseln, wenn ich diese Datei Lade, immer die Fehlermeldung kommt, "Ungültige Daten".

Zum erstellen des Containers benutze ich folgende Funktion.

private RSAParameters genKeyPair(string name)
        {
            CspParameters cspParams;
            cspParams = new CspParameters(1);
            cspParams.KeyContainerName = name;
            cspParams.Flags = CspProviderFlags.UseDefaultKeyContainer;
            cspParams.ProviderName = "Microsoft Strong Cryptographic Provider";

            rsaCSP = new RSACryptoServiceProvider(512, cspParams);
            RSAParameters RsaP = rsaCSP.ExportParameters(true);


            byte[] temp = Encoding.ASCII.GetBytes(rsaCSP.ToXmlString(true));

            FileStream fs = File.Create(name + ".key");
            fs.Write(temp, 0, temp.Length);
            fs.Close();

            return RsaP;
        }

Danach Lade ich die Datei in einem anderen Programm und Verschlüssel mit der DECRYPT Funktion (Auf Grund des Aufbaus des RSA sollte das ja möglich sein).

Funktion:

private byte[] generateLoginData(RSACryptoServiceProvider CrypPro)
        {
            string timeStamp = DateTime.Now.ToString("yyyy:MM:dd:HH:mm:ss"); // Der Time Stamp wird erstellt
            byte[] decryptedData = new byte[3 + Encoding.Unicode.GetByteCount(timeStamp)]; //Das Byte array initialisiert und deklariert, da später verschlüsselt werden soll. Die größer ergibt sich aus der timestamp Größe in Unicode und 3 bytes für den öffentlich schlüssel der mit verschlüsselt wird

            CrypPro.ExportParameters(false).Exponent.CopyTo(decryptedData, 0); // Der öffentlich schlüssel wird an den Beginn von decryptedData kopiert
            Encoding.Unicode.GetBytes(timeStamp).CopyTo(decryptedData, 3); // Das der Timestamp der durch UNICODE in ein Byte[] umgewandelt wurde, wird dahinter kopiert

            byte[] encryptedData = CrypPro.Decrypt(decryptedData, false); // decryptedData wird mit DECRYPT verschlüsselt

            return encryptedData;
        }

Auch wenn ich es zuerst normal mit encrypt verschlüssel und dann mit am server mit decrypt versuche kommt die gleiche fehlermeldung.
private Nachricht | Beiträge des Benutzers
BangerzZ
myCSharp.de - Member



Dabei seit:
Beiträge: 44

Themenstarter:

beantworten | zitieren | melden

Ok hat sich erledigt, ich hatte an meiner Server klasse einen Kopiervorgang falsch gemacht so das das letzte Byte immer 0 war.
private Nachricht | Beiträge des Benutzers
m0rius
myCSharp.de - Member

Avatar #avatar-3125.png


Dabei seit:
Beiträge: 1043

beantworten | zitieren | melden

Hallo BangerzZ,

um nochmal das Stichwort zum Fehler in den Raum zu werfen: Dies ist ein klassicher Fall des Zaunpfahlproblems.

m0rius
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
private Nachricht | Beiträge des Benutzers