Как исправить ошибку openssl_private_decrypt () в PHP? - PullRequest
0 голосов
/ 31 января 2019

Мне нужно закончить эту часть школьного проекта.

Создать openssl открытый и закрытый ключ

function openssl($text){
    # privaten Schlüssel erzeugen
    $res=openssl_pkey_new();
    # privaten Schlüssel zu String
    openssl_pkey_export($res, $privatekey);
    # öffentlichen Schlüssel
    $publickey=openssl_pkey_get_details($res);
    $publickey=$publickey["key"];
    openssl_public_encrypt($text, $crypttext, $publickey);
    $filenameCrypttext = "crypttext.txt";
    $filenamePrivatekeyText = "privatekey.txt";
    $files = [$filenameCrypttext, $filenamePrivatekeyText];
    createFile($crypttext, $filenameCrypttext);
    createFile($privatekey,$filenamePrivatekeyText);
    downloadZip($files);
}
function createFile($crypttext, $filename){
    file_put_contents($filename, $crypttext.PHP_EOL , FILE_APPEND | LOCK_EX);
}

function downloadZip($files){
    $zipname = "packet.zip";
    $zip = new ZipArchive;
    $zip->open($zipname, ZipArchive::CREATE);
    foreach ($files as $file){
        $zip->addFile($file);
    }
    $zip->close();
    foreach ($files as $file) {
        unlink($file);
    }

    header("Location: download.php?filename=$zipname");
}

Я загружаю свои 2 файла crypttext.txt и privatekey.txt в формате zip.Позже я хочу загрузить их.

Зашифровано

Privatekey

А следующий код - моя функция дешифрования

<div class="container">
<br>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    <label>Encrypted Text</label>
    <textarea name="encrypted_text"  placeholder="Text einfügen" class="form-control" rows="3"></textarea>
    <label>Private Key </label>
    <textarea name="private_key"  placeholder="Text einfügen" class="form-control" rows="3"></textarea>
    <br>
    <button type="submit" class="btn btn-primary">Hochladen</button>
</form>
<?php
if(isset($_POST['encrypted_text'], $_POST['private_key'])){
    echo 'isset';
    $encrypted = $_POST['encrypted_text'];
    $privatekey = $_POST['private_key'];
    $res = openssl_get_privatekey($privatekey);
    openssl_private_decrypt($encrypted, $decrypted, $res);
    echo '<br>';
    echo $decrypted;
    echo '<br>';
}
?>

Я не получил результата.Где моя ошибка?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...