在PHP中以POST的形式传递加密数据
我在sha512中生成了两个键,然后将它们放在单独的文件中。之后,我读取index.php中的公钥,将表单发布到同一页面,并将输入中发布的数据编码为其他表单,只有在发布时才会生成 当我试图将加密的数据发布到另一个页面decryp时,decryp页面上什么也没有发生 看起来发布的加密数据对私钥无效 我试图做的是用加密数据模拟两台服务器之间的通信 Index.php文件在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
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
来自菲利普·格伯