[英]Passing encrypted data by POST in the form in PHP
我在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>
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;
對於那些試圖發布加密字符串的人,將不會真正起作用,因為在加密時會生成特殊字符,這些問題使傳遞POST成為問題。
我發現的解決方案是將字符串轉換為十六進制並在另一側對其進行解碼。
bin2hex("that's all you need");
# 74686174277320616c6c20796f75206e656564
hex2bin('74686174277320616c6c20796f75206e656564');
# that's all you need
來自Philippe Gerber
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.