Ger Hayden Ответов: 1

.объем основных асимметричной криптографии


RSACryptoServiceProvider еще не реализован в .NET Core, поэтому, хотя мне удалось сгенерировать ключи, я не могу заставить Encrypt или Decrpyt работать, поэтому мне нужны мои собственные альтернативы.

Я не могу найти ничего полезного в интернете, чтобы направлять меня.

Логика, которую я хочу реализовать, такова

1. клиент вызывает API для открытого ключа RSA
2. API предоставляет открытый ключ
3. Клиент генерирует разовый ключ AES.
4. клиент шифрует ключ AES с помощью открытого ключа RSA
5. Клиент шифрует данные по алгоритму AES ключ
6. Клиент вызывает API для проверки подлинности поставки зашифрованный AES-ключ и зашифрованные учетные данные
7. API использует закрытый ключ RSA для расшифровки ключа AES
8. API использует ключ AES для расшифровки учетных данных
9. API использует учетные данные для проверки клиента
10. Если действует, API вопросы вышлю

Что я уже пробовал:

Я пробовал использовать RSACryptoServiceProvider непосредственно в своем коде и экспериментировал с Netcore.Шифрование (возможно, я был слишком быстр, чтобы отложить это в сторону). Я также сделал обширный поиск в интернете.

Логика выше терпит неудачу на шаге 7. Во избежание сомнений, клиент не является модулем .NET Core (его .NET 4.7.2), что позволяет мне пройти шаг 5.

Сгенерированное сообщение таково:
Работа на этой платформе не поддерживается.

и трассировка стека:
в системе.Безопасность.Cryptography.RSA.FromXmlString(строка xmlString)
на СКМЗ.Инфраструктура.Криптография.CryptoEngine.DecryptData(строка privateKey, байт[] dataToDecrypt) в D:\OneDrive\SBSB\projects\CentralMessageDistributionService_CoreAPI\CentralMessageDistributionService_CoreAPI\Infrastructure\Cryptography\CryptoEngine.cs:line 77
на CMDS.контроллерах.KeyController.GetJWTalt(строка symmetricKeyEncryptedAsJson) в D:\OneDrive\SBSB\projects\CentralMessageDistributionService_CoreAPI\CentralMessageDistributionService_CoreAPI\Controllers\KeyController.cs:line 196

а вот и фрагмент кода:
// Create an array to store the decrypted data in it
byte[] decryptedData;
using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
{
    // Set the private key of the algorithm
    rsa.FromXmlString(privateKey);
    decryptedData = rsa.Decrypt(dataToDecrypt, false);
}


Когда я извлек его для этого редактирования, я понял, что это FromXmlString, который выбрасывает исключение. Мне уже пришлось заменить его для генерации ключей, вот где известная проблема, так что если я могу придумать перегрузку моего собственного метода, который установит закрытый ключ, то я должен это сделать.

1 Ответов

Рейтинг:
0

MadMyche

Какая часть RSA отсутствует?
MS Docs NetCore 2.1 | класс RSACryptoServiceProvider[^]


Ger Hayden

Все это компилируется, но во время выполнения выдает сообщение о том, что оно не реализовано на этой платформе. Это известная проблема.

Ger Hayden

Обходной путь опубликован здесь https://github.com/dotnet/corefx/issues/23686 будет сделано. Я пока не могу опубликовать свое решение, потому что теперь у меня есть ошибка длины ключа в расшифровке...