Używam certyfikatu wygenerowanego przez makecert, który ma zarówno klucz prywatny, jak i publiczny. Strona java używa tego klucza publicznego do szyfrowania danych i .net odszyfrowuje je z powrotem.rsacryptoserviceprovider za pomocą certyfikatów x509 C#
Próbuję odszyfrować kodowany przez Javę szyfrowany ciąg 64-bitowy i uzyskiwać złe dane.
Aby sprawdzić, czy wszystko jest w porządku na końcu sieci, starałem się zaszyfrować klucz publiczny, a następnie odszyfrować prywatne za pomocą tego samego certyfikatu. Mój kod wygląda tak.
X509Certificate2 cert = GetCert(key, StoreName.My, StoreLocation.LocalMachine);
RSACryptoServiceProvider provider = (RSACryptoServiceProvider)cert.PrivateKey;
RSACryptoServiceProvider publicprovider = (RSACryptoServiceProvider)cert.PublicKey.Key;
if (cert.HasPrivateKey)
MessageBox.Show("Got private key");
byte[] encrypted = publicprovider.Encrypt(Encoding.UTF8.GetBytes(text), false);
byte[] decryptedBytes = provider.Decrypt(encrypted, false);
Nawet tutaj dostaję błąd. Czy coś mi brakuje?
Certyfikat jest ważny zarówno z kluczem publicznym, jak i prywatnym.
Jaki błąd? i na jakiej linii? –
Wyjątek: Złe dane .. Brak dalszego wewnętrznego wyjątku , gdy bajt [] decryptedBytes = provider.Decrypt (encrypted, false); jest nazywane – bkhanal