Ich habe einen 256 Byte Modul ('n'), einen 256 Byte privaten Exponenten ('d') und einen 3 Byte {1,0,1} öffentlichen Exponenten ('e '). Ich versuche 32 Byte Daten zu signieren.RSA Kryptographie mit rohen Schlüsseln, C#
Ich habe versucht, einen neuen RSAParameters zu erstellen.
byte[] n = new byte[256]; //populated in my code
byte[] d = new byte[256]; //populated in my code
byte[] e = new byte[]{1,0,1};
byte[] junkData = new byte[32]; //populated in my code
RSAParameters rsaParam = new RSAParameters();
rsaParam.Modulus = n;
rsaParam.Exponent = e;
rsaParam.D = d;
Ich erstelle dann einen RSACrytoServiceProvider, die Parameter in sie importieren und versuchen, Daten zu unterzeichnen.
var csp = new RSACryptoServiceProvider(2048);
csp.ImportParameters(rsaParam);
csp.SignData(junkData, new SHA1CryptoServiceProvider());
Das Problem ist, dass die RSACryptoServiceProvider nur öffentlich zu sein scheint, und wenn ich versuche, erhalte ich zu unterzeichnen eine Exception Cryptography ‚Keyset nicht existiert‘.
Brauche ich auch die P- und Q-Elemente, um die Daten richtig zu signieren, oder mache ich etwas, das offensichtlich falsch ist? Danke für die Hilfe!
ich vermute, dass die csp will, dass P & Q und np und nq simplyfy sign und entschlüsseln operationen mit dem chinesischen rest satz ... spart ein paar zyklen, aber erfordert mehr als N, d und e – DarkSquirrel42
... aaand von natürlich habe ich vergessen zu erwähnen q_inv ... – DarkSquirrel42
Mögliche duplikate von [Entschlüsseln mit RSA-Verschlüsselung in VB.NET] (http://stackoverflow.com/questions/42098493/decrypting-with-rsa-encryption-in-vb-net) –