Я хочу расшифровать массив байтов. для этого я шифрую данные в java с открытым ключом серверов. Затем я отправляю данные на сервер C#. Там я хочу расшифровать с помощью класса «RSACryptoServiceProvider». Я инициализировать его:Дешифрование с помощью RSACryptoServiceProvider сбой
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(1024);
rsa.ImportParameters(keyInfo);
Переменная (RSAParameters) «KeyInfo» инициализируется с «модулем» и «PrivateKey»
keyInfo.Modulus = m.getBytes();
keyInfo.D = d.getBytes();
Значения для «м» и «д» являются жестко закодированные и из экземпляра BigInteger от here. Я знаю, что жесткий код плохой, но в настоящее время я могу это сделать.
Когда мне это нравится, исключение вызывает «плохие данные». При добавлении открытого ключа в
keyInfo.Exponent = pubExpBytes
затем она проходит, но исключение выбрасывается позже «Ключ не существует» в методе
result = rsa.Decrypt(inputBuf, false);
и свойство «PublicOnly» верно даже хотя я добавил ключ в «keyInfo.D».
Что я делаю неправильно?
Как вы загружаете объект BigInteger? что-то вроде BigInteger bigInt = 235235235235 ......;? –
Я загрузился следующим образом: BigInteger m = новый BigInteger (modByteArray); но теперь я пытаюсь использовать xml-строку – chef
В java-коде не используется отступ по умолчанию. Но есть случайные байты. Является ли это проблемой для меня или нет, я должен учитывать это при расшифровке? Как я могу дешифровать правильно все же? Проблема в том, что теперь я получаю исключение «Bad Data» из «Decrypt» -метода. Btw. Я не могу изменить код Java – chef