Laden...

RSA Fehler: Ungültige Daten

Erstellt von BangerzZ vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.344 Views
B
BangerzZ Themenstarter:in
45 Beiträge seit 2009
vor 13 Jahren
RSA Fehler: Ungültige Daten

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.

B
BangerzZ Themenstarter:in
45 Beiträge seit 2009
vor 13 Jahren

Ok hat sich erledigt, ich hatte an meiner Server klasse einen Kopiervorgang falsch gemacht so das das letzte Byte immer 0 war.

1.002 Beiträge seit 2007
vor 13 Jahren

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