У меня есть закрытый и открытый ключ в отдельных файлах.

В инструкции сказано использовать этот код:

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();

rsa.FromXmlString(PrivateKey);

Но когда код достигает второй строки, я получаю эту ошибку:

Произошло необработанное исключение типа «System.Security.Cryptography.CryptographicException» в mscorlib.dll

Дополнительная информация: параметр неверен.

В чем проблема?

В примере кода от компании, у которого мы получили ключ, он использует пример peivate и открытый ключ, например:

<RSAKeyValue><Modulus>KEY VALUE</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>

Хотя я присоединяюсь <RSAKeyValue><Modulus> к началу и </Modulus><Exponent>AQAB</Exponent></RSAKeyValue>

До конца, отмечая работы

0
Hamed_gibago 28 Май 2017 в 07:43

2 ответа

Лучший ответ

Я использовал этот сайт для преобразования моего ключа из чистой строки в xml:

https://superdry.apphb.com/tools/online-rsa-key-converter

Потому что .Net хотят ключи в формате xml

0
Hamed_gibago 28 Май 2017 в 06:17

Наиболее вероятной причиной является то, что ваш закрытый ключ не имеет всех значений D, P, Q, DP, DQ, InverseQ.

Следующей наиболее вероятной причиной является то, что ваш D в форме byte [] не так длинен, как модуль (в форме byte []). В том же духе все P / Q / DP / DQ / InverseQ должны иметь свою форму байта [] как половину длины модуля (округление вверх).

Есть определенные ключи, для которых это не так в формате XML. Самый надежный способ - построить структуру RSAParameters самостоятельно и вызвать ImportParameters. Одна из причин: методы XML вообще не доступны в .NET Core, но есть ImportParameters.

0
bartonjs 28 Май 2017 в 06:52