#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 … это настоящая причина, по которой я здесь