Запрос клиента C # на получение зашифрованного изображения из php-скрипта

#c# #php #ssl #encryption

#c# #php #ssl #Шифрование

Вопрос:

Клиент C # отправляет веб-запрос PHP-скрипту, чтобы получить изображение, PHP должен отправить изображение в зашифрованном формате клиенту

Используемое шифрование — асимметричное (открытый ключ и закрытый ключ)

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

но я не могу заставить PHP-скрипт работать (параметр ключа не является допустимой ошибкой открытого ключа)

C#

 private void Submitbtn_Click(object sender, EventArgs e)
    {
        string url = "http://localhost/req.php";
        WebClient client = new WebClient();
        client.DownloadFileCompleted  = new AsyncCompletedEventHandler(client_DownloadFileCompleted);
        client.DownloadProgressChanged  = new DownloadProgressChangedEventHandler(ProgressChanged);
        client.DownloadFileAsync(new Uri(url), @"test.jpg");
    }
  

PHP

 <?Php
include('phpseclib/Net/SSH2.php');
$data=file_get_contents("private.png");
$key= file_get_contents('KeyBagPBkey');
openssl_public_encrypt($data,$output,$key);
    $mm_type="application/octet-stream";
    header("hst: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Cache-Control: public");
    header("Content-Description: File Transfer");
    header("Content-Type: " . $mm_type);
    header("Content-Length: " .(string)(filesize($output)) );
    header('Content-Disposition: attachment; filename="'.basename($output).'"');
    header("Content-Transfer-Encoding: binaryn");
    readfile($output); 
    exit();
    ?>
  

Комментарии:

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

2. Учитывая включение, я предполагаю, что вы пытаетесь зашифровать с помощью открытого ключа SSH, в то время как вам нужен открытый ключ в формате PKCS # 1 или X.509. Однако документация PHP настолько запутана, что я не могу установить, какая именно.

3. @ Maarten Bodewes … это настоящая причина, по которой я здесь