Расшифровка C# RSA с открытым ключом

Мне нужно иметь возможность зашифровать небольшой хэш в PHP, а затем расшифровать его в C#, чтобы сравнить хеш с данными. Так что да, он используется в качестве подписи для проверки происхождения данных.

У меня проблемы с (A) загрузкой ключа (B) дешифрованием с открытым ключом

С помощью RSACryptoServiceProvider я могу достаточно просто загрузить ключ, однако он не поддерживает расшифровку с помощью открытого ключа.

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

Я могу получить копии ключа в любом из следующих форматов:

CRYPT_RSA_PUBLIC_FORMAT_RAW
CRYPT_RSA_PUBLIC_FORMAT_PKCS1_RAW
CRYPT_RSA_PUBLIC_FORMAT_OPENSSH
CRYPT_RSA_PUBLIC_FORMAT_PKCS1

Мой PHP-код для шифрования достаточно прост и успешно работает.

<?php
include 'PHPSecLib/Crypt/RSA.php';
$privatekey = file_get_contents('privatekey.txt');
$rsa = new Crypt_RSA();
$rsa->loadKey($privatekey);
$cipher = $rsa->encrypt("simple hash");
file_put_contents('cipher.txt', ($cipher));

Все, что мне нужно в C#, — это простой способ

  • Загрузка открытого ключа из строки/файла любого из ранее упомянутых форматов или формата RSACryptoServiceProvider XML.
  • Расшифровка с загруженным открытым ключом

Я пытаюсь уже больше дня, и мне нужна помощь с этим.

Спасибо.


person Matty    schedule 30.05.2013    source источник


Ответы (1)


Как вы упомянули, вы пытаетесь проверить подпись с помощью RSA. Так что это должно быть то, что вы ищете. Вот несколько ссылок, которые показывают, как:

person President James K. Polk    schedule 31.05.2013