Могу ли я использовать открытые/закрытые ключи RSACryptoServiceProvider для взаимодействия с Crypto++?

StackOverflow https://stackoverflow.com/questions/919733

Вопрос

Я создал открытый/закрытый ключ, используя RSACryptoServiceProvider и сохранил его как XML.Я могу использовать это для шифрования/дешифрования/подписи и проверки данных в .NET.

У меня есть еще одно приложение, предназначенное для работы на сервере Linux.Я разрабатываю его на C++ и использую Crypto++ для своих нужд криптографии.

Я хочу обмениваться данными между этими двумя приложениями, но для этого мне нужно преобразовать RSAParameters в открытые/закрытые ключи, понятные Crypto++.

Я также готов использовать преобразование открытых/закрытых ключей, сгенерированных Crypto++, в RSAParameters, если это проще сделать.

Есть идеи?

Это было полезно?

Решение

Самый простой способ, вероятно, — напрямую использовать RSAParameters вместо использования XML.

Просто сохраните массивы байтов, содержащиеся в параметрах RSAParameters, в файле в формате по вашему выбору.Считайте массивы байтов обратно в свою программу на C++ и создайте КриптоПП::Целое числоот них.Используйте эти целые числа для инициализации RSAFunction (открытый ключ) или ИнвертируемаяRSAFфункция (закрытый ключ).

Обратный путь аналогичен:Т.е.

RSAFunction publicKey = ...;

size_t modulusLength = publicKey.getModulus().ByteCount();
unsigned char * modulus = new unsigned char[modulusLength];
publicKey.getModulus().Encode(modulus, modulusLength);

// similarly with PublicExponent and remember to clean up the arrays.

и перенесите массивы в свое .NET-приложение, где вы сможете использовать их для инициализации RSAParameters.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top