Ключ RSA необходимо восстановить - PullRequest
0 голосов
/ 26 ноября 2018

Нужна помощь по проблеме, возникшей у меня с ключом RSA.Я генерирую ключ RSA через код C # на сервере с именем контейнера ключей, которое я определяю, например, "CustKey".Я прекрасно получаю XML-строку ключа и могу подключить к ней приложение, используя этот ключ.У меня есть API, который генерирует ключ через конечную точку.Если я повторно разверну API, мое приложение, использующее открытый ключ, перестанет работать над его декодированием.Мне нужно снова запустить тот же код, чтобы создать ключ, и зашифрованная строка становится одинаковой каждый раз, когда я ее воссоздаю, и затем приложение-потребитель снова работает нормально.Кажется, это происходит, когда пул приложений перезагружается, но у меня отключена его переработка, но публикация прекращается и я запускаю сайт IIS API.Любая идея, как сохранить ключ работоспособным и зачем мне его регенерировать, но он каждый раз использует одно и то же зашифрованное значение ключа.

Спасибо за любую информацию.

1 Ответ

0 голосов
/ 26 ноября 2018

Некоторые примеры вашего кода очень помогли бы понять, что происходит.На данный момент я могу только предположить, что вы пытаетесь декодировать ваше сообщение с открытым ключом, а не с закрытым.

Во-первых, у вас должно быть два парных ключа:

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
string publicKey = rsa.ToXmlString(false);
string privateKey = rsa.ToXmlString(true);

Во-вторыхВы должны предоставить свой открытый ключ всем людям, которые хотят отправить вам секретное сообщение:

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(publicKey);
string secretMessage = Convert.ToBase64String(rsa.Encrypt(Encoding.UTF8.GetBytes(openMessage), false));

И, наконец, когда вы получаете секретное сообщение, вы можете расшифровать его, потому что только у вас есть личноеключ, который связан с открытым:

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(privateKey);
string revealedMessage = Encoding.UTF8.GetString(rsa.Decrypt(Convert.FromBase64String(secretMessage), false));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...