posiadam skrypt w javie który chciał bym przełożyć na C#, próbowałem swoich sił ale mi nie wychodzi, może wy mi pomożecie,
// Tworzenie kluczy
KeyPairGenerator keygen = KeyPairGenerator.getInstance("RSA");
RSAKeyGenParameterSpec spec = new RSAKeyGenParameterSpec(1024, RSAKeyGenParameterSpec.F4);
keygen.initialize(spec);
BigInteger publicKey = ((RSAPublicKey)keygen.generateKeyPair().getPublic()).getModulus();
// Tutaj wysyłam publiczny klucz do klienta który szyfruje dane i wysyła je serwerowi
// a tutaj serwer decryptuje dane
Cipher rsaCipher = Cipher.getInstance("RSA/ECB/nopadding");
rsaCipher.init(Cipher.DECRYPT_MODE, getClient().getRSAPrivateKey());
decrypted = rsaCipher.doFinal(_raw, 0x00, 0x80 );
ja zrobilem to tak:
<code class="c#">
// Tworzenie kluczy
this.Crypt = new RSACryptoServiceProvider(1024);
RSAParameters rsaPara = this.Crypt.ExportParameters(true);
rsaPara.Exponent = new byte[] { 1, 0, 1 }; // set Exponent to F4 = 65537
this.Crypt.ImportParameters(rsaPara);
this.PublicKey = this.Crypt.ExportParameters(false).Modulus;
// Tutaj wysyłam publiczny klucz do klienta który szyfruje dane i wysyła je serwerowi
// a tutaj serwer decryptuje dane
byte[] decrypted = this.Client.RSACrypt.Crypt.Decrypt(this.RawPacket, false);
i dostaje taki błąd przy próbie deszyfracji:
System.Security.Cryptography.CryptographicException: Złe dane.
at System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr)
at System.Security.Cryptography.RSACryptoServiceProvider.DecryptKey(SafeKeyHandle pKeyContext, Byte[] pbEncryptedKey, Int32 cbEncryptedKey, Boolean fOAEP, ObjectHandleOnStack ohRetDecryptedKey)
at System.Security.Cryptography.RSACryptoServiceProvider.Decrypt(Byte[] rgb, Boolean fOAEP)
te skrypt pisany w javie działa idealnie, wiec musiałem coś sknocić ale nie mam pojęcia co :/