Передача зашифрованных данных POST в форме на PHP - PullRequest
1 голос
/ 11 мая 2019

Я генерирую два ключа в sha512, а затем помещаю их в отдельные файлы. После этого я читаю открытый ключ в index.php, публикую форму на той же странице и кодирую данные, размещенные во входных данных, в другой форме, сгенерированной только при наличии сообщения.

Когда я пытаюсь опубликовать зашифрованные данные на другой странице, для расшифровки ничего не происходит на странице расшифровки.

Похоже, что опубликованные зашифрованные данные недействительны для закрытого ключа.

Я пытаюсь симулировать связь между двумя серверами с зашифрованными данными.

Файл Index.php

    if (isset($_POST['name']) ) {
        $file = fopen('chave_publica.txt', 'r');
        $file2 = fopen('chave_privada.txt', 'r');
        $publicKey =  fread($file,filesize("chave_publica.txt"));
        // $chavePrivada =  fread($file2,filesize("chave_privada.txt"));
        // echo 'Valor digitado: '.$_POST['name'].'<br>';
        // Encrypting
        openssl_public_encrypt($_POST['name'], $criptedData, $publicKey);

        echo $criptedData;
        // decrypting
        // openssl_private_decrypt($criptedData, $decriptado, $chavePrivada);
        // echo '<br>'.'Valor decriptado: '. $decriptado;
    }

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>

    <!-- <?php echo $criptedData ?> -->
    <?php if (isset($_POST['name']) ) { ?>
        <form method="post" style="margin-top: 20px;" action="decryp.php">
        <textarea name="name"><?php echo $criptedData; ?></textarea>
            <button type="submit">Send</button>
        </form>
    <?php }else{ ?>
        <form method="post" style="margin-top: 20px;" action="index.php" enctype="application/x-www-form-urlencoded">
            <input type="text" name="name" placeholder="Seu nome aqui">
            <button type="submit">Encriptar</button>
        </form>
    <?php } ?>
</body>
</html>

файл расшифровки

echo $cripted = $_POST['name'];

$file2 = fopen('chave_privada.txt', 'r');
$privateKey =  fread($file2,filesize("chave_privada.txt"));
// $decrypted = 'a';

openssl_private_decrypt($cripted, $decrypted, $privateKey);

echo '<br>'.'Valor decrypted: '. $decrypted;

1 Ответ

0 голосов
/ 17 мая 2019

Для тех, кто пытается сделать пост зашифрованной строки, работать не будет, потому что при шифровании генерируются специальные символы, это создает проблему для передачи в POST.

Решение, которое я нашел, состояло в том, чтобыпреобразовать строку в шестнадцатеричное и декодировать ее на другой стороне.

bin2hex("that's all you need");
# 74686174277320616c6c20796f75206e656564

hex2bin('74686174277320616c6c20796f75206e656564');
# that's all you need

PHP преобразовать строку в шестнадцатеричное и шестнадцатеричное в строку

изФилипп Гербер

...