Я использую сертификат, сгенерированный makecert, который имеет как закрытый, так и открытый ключ.
Java-сторона использует этот открытый ключ для шифрования данных, а .net расшифровывает их обратно.
Я пытаюсь расшифровать зашифрованную 64-битную строку Java и получаю неверные данные.
Чтобы проверить, все ли хорошо в конце .Net, я попытался зашифровать с помощью открытого ключа, а затем расшифровать с помощью личного, используя тот же сертификат. Мой код выглядит следующим образом.
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);
Даже здесь я получаю ошибку. Я что-то скучаю?
Сертификат выглядит действительным как с открытым, так и с закрытым ключом.