Geschwindigkeit beim Signieren mit RSACryptoServiceProvider

9

Ich arbeite gerade an einer einfachen Datensignierung. Es ist das erste Mal, dass ich das Signieren verwende, vielleicht mache ich nur etwas falsch. Aber ich denke nicht, dass es normal ist, dass es 4,6 Sekunden dauert, um 448 Bytes unter Verwendung eines 512-Bit-RSA- und SHA1-Hashings zu signieren.

Der Code:

%Vor%

Warum ist das so langsam? Ich fand das: Ссылка , aber das ist ein Problem von .NET 2.0. Ich benutze 4.0.

Ist es normal, dass dies so lange dauert oder gibt es einen Fehler?

Danke für jede Hilfe.

    
Marks 23.11.2010, 16:44
quelle

3 Antworten

1

Nur um Sie wissen zu lassen, dass ich die gleiche Langsamkeit erfahren habe und SHA1-signierte Hashes bekommen habe. Der Code, der normalerweise Dutzende von Hunderten von Transaktionen pro Sekunde signierte, verlangsamte sich alle 5 Sekunden auf 1.

Ich arbeitete zu Hause und war nicht mit dem Netzwerk meines Unternehmens verbunden. Nach etwas Googeln habe ich es geschafft, den Schuldigen zu erkennen. Ein Fehler, der RSACryptoServiceProvider auf .Net Framework 2.0 zu beeinflussen scheint - was ich glaube, ist genau der gleiche Code auf .NET Framework 4.0 verwendet.

Da laut Ссылка meine temporäre Langsamkeit möglicherweise darauf zurückzuführen ist, dass sowohl die SignData-Methode als auch die VerifyData-Methode von RSACryptoServiceProvider versuchen, mit meinem Server zu kommunizieren companys Domain Controller, habe ich beschlossen, eine VPN-Verbindung zu meiner Firma aufzubauen, was ein sofortiger Erfolg war.

Jetzt bekomme ich SHA1 sofort wieder, statt bis zu 5 Sekunden zu warten.

Ich weiß, dass dies keine Lösung ist, aber zumindest eine vernünftige Lösung. Es verhindert auch, dass wir unseren Verstand verlieren.

    
Julio Nobre 22.07.2012 18:44
quelle
0

Paar Punkte:

1) Ich habe auch einen höheren Durchsatz gefunden, indem ich den Hash-Algorithmus SHA1 direkt aufgerufen habe und ihn dann in die Methode SignHash () anstelle der Methode SignData () übergeben habe. Nicht sicher, ob es sich um ein Implementierungsproblem in der SignData () -Methode handelt, aber das scheint meine Erfahrung zu sein.

%Vor%

2) Wenn Sie alles in einem Methodenaufruf tun wollen, verhindern Sie, dass das Framework eine Suche durchführt (wenn Sie die Zeichenfolge "SHA1" übergeben), da es teuer ist und zur Verzögerung beitragen kann stattdessen:

%Vor%     
Gerald Davis 23.11.2010 17:31
quelle
-2

Ein Grund dafür, warum Verschlüsselungsvorgänge eine Weile dauern, ist, weil Sie nicht wollen, dass Leute Ihren Algorithmus brutal erzwingen können. Was ist Ihr Anwendungsfall für das Signieren Ihrer Daten? Muss es schnell sein? Ist es eine einfache Überprüfung, um sicherzustellen, dass die Daten gültig sind oder müssen sie verschlüsselt werden?

Wenn Sie es ernst meinen mit der Verschlüsselung, sollten Sie sich das Hüpfburgenkram ansehen:

Ссылка

    
jonnii 23.11.2010 16:53
quelle

Tags und Links