Я написал 3 функции на C++, используя Crypto ++ для генерации пар ключей, шифрования и расшифровки строки. Crypto++ side:Расшифровка Crypto ++ RSA шифрованный текст в C# вызывает исключение
//Decode public key
RSA::PublicKey pbKeyDecoded;
StringSource ss2(publicKey, true, new Base64Decoder);
pbKeyDecoded.BERDecode(ss2);
Integer m = Integer((const byte*)plaintext.data(), plaintext.size());
Integer crypted = pbKeyDecoded.ApplyFunction(m);
...
Что я делаю, генерировать ключ, DER закодировать его, а затем кодировать его в Base64. После этого я шифрую открытый текст через открытый ключ и сохраняю как закрытый ключ, так и шифр как закодированные в base64 строки в двух отдельных файлах.
Теперь на C#. Я читаю строку base64, расшифровывая их и загружаю их через AsnParser, которые, похоже, загружаются просто отлично. Затем я звоню Decrypt
. C# side:
AsnKeyParser keyParser = new AsnKeyParser("rsa-public.der");
RSAParameters publicKey = keyParser.ParseRSAPublicKey();
CspParameters csp = new CspParameters;
csp.KeyContainerName = "RSA Test (OK to Delete)";
csp.ProviderType = PROV_RSA_FULL; // 1
csp.KeyNumber = AT_KEYEXCHANGE; // 1
RSACryptoServiceProvider rsp = new RSACryptoServiceProvider(csp);
rsp.PersistKeyInCsp = false;
rsp.ImportParameters(privateKey);
//Causes exception here..
var data = rsp.Decrypt(cipherArr, true);
...
Но я получаю ошибку исключения при попытке расшифровать его с fOAEP = true
: Произошла ошибка при декодировании OAEP отступов: CryptographicException. Если я пройду fOAEP = false
, тогда я получаю CryptographicException: этот параметр неверен.
Почему я получаю исключение в C# при попытке расшифровать шифрованный текст Crypto ++?
Пожалуйста, разместите свой код в вопросе вместо ссылки на pastebin, иначе ваш вопрос скорее всего будет закрыт. Кроме того, если вы не можете сделать MCVE (http://stackoverflow.com/help/mcve), то удалите все ненужные коды перед публикацией здесь. –