在PHP中以POST的形式传递加密数据

在PHP中以POST的形式传递加密数据,php,post,encryption,encryption-asymmetric,sha512,Php,Post,Encryption,Encryption Asymmetric,Sha512,我在sha512中生成了两个键,然后将它们放在单独的文件中。之后,我读取index.php中的公钥,将表单发布到同一页面,并将输入中发布的数据编码为其他表单,只有在发布时才会生成 当我试图将加密的数据发布到另一个页面decryp时,decryp页面上什么也没有发生 看起来发布的加密数据对私钥无效 我试图做的是用加密数据模拟两台服务器之间的通信 Index.php文件 if (isset($_POST['name']) ) { $file = fopen('chave_pu

我在sha512中生成了两个键,然后将它们放在单独的文件中。之后,我读取index.php中的公钥,将表单发布到同一页面,并将输入中发布的数据编码为其他表单,只有在发布时才会生成

当我试图将加密的数据发布到另一个页面decryp时,decryp页面上什么也没有发生

看起来发布的加密数据对私钥无效

我试图做的是用加密数据模拟两台服务器之间的通信

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>
if(isset($\u POST['name'])){
$file=fopen('chave_publica.txt','r');
$file2=fopen('chave_privada.txt','r');
$publicKey=fread($file,filesize(“chave_publica.txt”);
//$chavePrivada=fread($file2,文件大小(“chave_privada.txt”);
//回音“Valor digitado:”.$\u POST['name']。
; //加密 openssl_public_encrypt($_POST['name'],$scripteddata,$publicKey); echo$scripteddata; //解密 //openssl_private_decrypt($scripteddata、$decriptado、$chavePrivada); //回音“
”.“Valor decriptado:”.$decriptado; } 发送 镶嵌物
decryp文件

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;
echo$scripted=$\u POST['name'];
$file2=fopen('chave_privada.txt','r');
$privateKey=fread($file2,filesize(“chave_privada.txt”);
//$decrypted='a';
openssl_private_decrypt($scripted,$decrypted,$privateKey);
回音“
”。“Valor解密:”$解密;
对于那些试图发布加密字符串的人来说,这不会真正起作用,因为当加密生成特殊字符时,这些字符会给post传递带来问题

我找到的解决方案是将字符串转换为十六进制,并在另一端对其进行解码

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

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

来自菲利普·格伯