Мне нужно иметь возможность зашифровать небольшой хэш в 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. - Расшифровка с загруженным открытым ключом
Я пытаюсь уже больше дня, и мне нужна помощь с этим.
Спасибо.