"Bad Key." Ausnahme beim Entschlüsseln mit RSACryptoServiceProvider (C # .NET)

8

Ich versuche, Daten zu entschlüsseln, die zuvor in RSA verschlüsselt wurden (keine Sorge, ich soll es können, ich habe die Schlüssel. Nichts illegales:).

Allerdings bekomme ich einen "schlechten Schlüssel". Fehler in der Entschlüsselungszeile. Ich bin sicher, dass dieser Schlüssel richtig ist, wie ich es aus Vektoren genommen habe. Die Vektoren werden im folgenden Code bereitgestellt. Theoretisch habe ich alle Informationen zu entschlüsseln, obwohl es nicht funktioniert. Ich denke, es könnte eine .NET-Entschlüsselungsmethode sein, die ich noch nicht verstanden habe.

Hier ist der Code:

%Vor%

Jede Einsicht wird sehr geschätzt . Ich habe versucht, dies seit Wochen zu debuggen. Buchstäblich.

    
Lazlo 07.09.2009, 23:51
quelle

3 Antworten

20

Ich hatte das gleiche Problem mit der "Bad Key" Ausnahme, stellte sich heraus, dass das Problem war, wie ich mein Zertifikat erstellt habe.

Ich habe den Schalter benutzt:

%Vor%

und wenn ich es geändert habe zu:

%Vor%

es hat gut funktioniert.

Hier ist der vollständige Befehl, den ich für makecert verwendet habe:

%Vor%     
Matt Palmerlee 29.09.2010, 18:34
quelle
2

Ich sehe, dass dies eine alte Frage ist, aber ich antworte, weil sie mir als Antwort auf ein aktuelles Problem vorgeschlagen wurde.

Die Prädikate sind fehlerhaft, weil (a) Die RSA-Verschlüsselung funktioniert nicht, wenn der Klartext die gleiche Größe wie der Schlüssel hat und (b) Der abschließende Vergleich verwendet '==', um die Objektgleichheit anstelle der elementweisen Äquivalenz zu prüfen.

Aber die Antworten sind gut: Stellen Sie sicher, dass das Zertifikat so erstellt wurde, dass es für den Austausch geeignet ist, und wenn Sie ein Byte-Array wie dieses vergleichen, stellen Sie elementweise Äquivalenz sicher.

    
user3893982 31.07.2014 03:28
quelle
0
___ qstnhdr ___ "Bad Key." Ausnahme beim Entschlüsseln mit RSACryptoServiceProvider (C # .NET) ___ tag123c ___ C # (sprich "Cis") ist eine objektorientierte Programmiersprache auf hohem Niveau, die für die Erstellung einer Vielzahl von Anwendungen entwickelt wurde, die auf dem .NET Framework (oder .NET Core) ausgeführt werden. C # ist einfach, leistungsfähig, typsicher und objektorientiert. ___ tag123net ___ Das .NET-Framework ist ein Software-Framework, das hauptsächlich für das Microsoft Windows-Betriebssystem entwickelt wurde. Es enthält eine Implementierung der Basisklassenbibliothek, Common Language Runtime (allgemein als CLR bezeichnet), Common Type System (allgemein als CTS bezeichnet) und Dynamic Language Runtime. Es unterstützt viele Programmiersprachen, einschließlich C #, VB.NET, F # und C ++ / CLI. NICHT für Fragen zu .NET Core verwenden. ___ answer3824758 ___

Ich hatte das gleiche Problem mit der "Bad Key" Ausnahme, stellte sich heraus, dass das Problem war, wie ich mein Zertifikat erstellt habe.

Ich habe den Schalter benutzt:

%Vor%

und wenn ich es geändert habe zu:

%Vor%

es hat gut funktioniert.

Hier ist der vollständige Befehl, den ich für makecert verwendet habe:

%Vor%     
___ tag123rsa ___ RSA ist ein allgemeiner Algorithmus für öffentliche Schlüssel, der für die Verschlüsselung und Signatur verwendet werden kann. Es ist eine Kernkomponente der meisten Sicherheitsprotokolle, die im Internet verwendet werden, einschließlich der SSL / TLS-Protokollsuite. Bei Fragen zu IBM Rational Software Architect verwenden Sie den Tag rational-rsa. ___ tag123rsacrptoserviceprovider ___ Das RSACryptoServiceProvider-Objekt führt die asymmetrische Verschlüsselung und Entschlüsselung mithilfe der Implementierung des vom Kryptografiedienstanbieter (CSP) bereitgestellten RSA-Algorithmus durch. ___ qstntxt ___

Ich versuche, Daten zu entschlüsseln, die zuvor in RSA verschlüsselt wurden (keine Sorge, ich soll es können, ich habe die Schlüssel. Nichts illegales:).

Allerdings bekomme ich einen "schlechten Schlüssel". Fehler in der Entschlüsselungszeile. Ich bin sicher, dass dieser Schlüssel richtig ist, wie ich es aus Vektoren genommen habe. Die Vektoren werden im folgenden Code bereitgestellt. Theoretisch habe ich alle Informationen zu entschlüsseln, obwohl es nicht funktioniert. Ich denke, es könnte eine .NET-Entschlüsselungsmethode sein, die ich noch nicht verstanden habe.

Hier ist der Code:

%Vor%

Jede Einsicht wird sehr geschätzt . Ich habe versucht, dies seit Wochen zu debuggen. Buchstäblich.

    
___ answer25050374 ___

Ich sehe, dass dies eine alte Frage ist, aber ich antworte, weil sie mir als Antwort auf ein aktuelles Problem vorgeschlagen wurde.

Die Prädikate sind fehlerhaft, weil (a) Die RSA-Verschlüsselung funktioniert nicht, wenn der Klartext die gleiche Größe wie der Schlüssel hat und (b) Der abschließende Vergleich verwendet '==', um die Objektgleichheit anstelle der elementweisen Äquivalenz zu prüfen.

Aber die Antworten sind gut: Stellen Sie sicher, dass das Zertifikat so erstellt wurde, dass es für den Austausch geeignet ist, und wenn Sie ein Byte-Array wie dieses vergleichen, stellen Sie elementweise Äquivalenz sicher.

    
___
dtb 08.09.2009 01:18
quelle