2017-08-01 4 views
0

Ich möchte Fragen über RSA Zeichen auf C# stellen.Dokument mit eigenen RSA-Parametern signieren, die Hex-encoded sind

Ich habe ein Dokument für das Zeichen. Ich habe einfache Hexadezimalwerte von Modul, privatem Exponenten und öffentlichem Exponenten. Ich möchte nicht mit zufällig generierten Schlüsseln signieren. Wenn ich mit Zeichen mit Zeichenwerkzeug versuche, habe ich das Ergebnis perfekt. Aber ich kann es nicht mit C# machen. Ich bin neu für diese Art von Problem. Also bin ich wirklich festgefahren.

Ich sah viele Websites und Artikel, aber ich konnte keine Lösung finden. Vielleicht gibt es das, aber ich kann es nicht verstehen, ich weiß es nicht.

Wenn Sie mir mit Details erklären könnten (Schritt-Schritt), werde ich wirklich dankbar sein.

Antwort

0

In .NET benötigen Sie die vollständigen CRT-Parameter für den privaten Schlüssel, wenn Sie also D haben, benötigen Sie auch P, Q, DP, DQ und InverseQ.

RSAParameters rsaParams = new RSAParameters(); 
rsaParams.Modulus = ParseHex(modulus); 
rsaParams.Exponent = ParseHex(exponent); 
rsaParams.D = ParseHex(d, rsaParams.Modulus.Length); 
rsaParams.P = ParseHex(p, (rsaParams.Modulus.Length + 1)/2); 
rsaParams.Q = ParseHex(q, rsaParams.P.Length); 
rsaParams.DP = ParseHex(dp, rsaParams.P.Length); 
rsaParams.DQ = ParseHex(dq, rsaParams.P.Length); 
rsaParams.InverseQ = ParseHex(inverseQ, rsaParams.P.Length); 

RSA rsa = RSA.Create(); 
rsa.ImportParameters(rsaParams); 

Wo ParseHex(string str, int len=-1) eine Routine, die Ihre Hexstring auf eine feste Länge Array parst (wenn die Hex-String kurz ist, sollte das Array mit 0-Byte-Werte werden gepolstert links).

Verwandte Themen