簡體   English   中英

PHP:使用OpenSSL加密和解密時出錯

[英]PHP: error when encrypting and decrypting with openSSL

我一直在嘗試制作兩個PHP頁面,一個進行加密,另一個進行解密。

加密頁面的代碼:

<form action="encrypt.php" method="post">
<input type="text" name="data">
<input type="submit">
</form>

<?php
    if($_SERVER["REQUEST_METHOD"] == "POST")
    {
        $config = array(
                "digest_alg" => "sha512",
                "private_key_bits" => 4096,
                "private_key_type" => OPENSSL_KEYTYPE_RSA,
                );
        $keys = openssl_pkey_new($config);
        openssl_pkey_export($keys, $privKey);    
        $pubKey = openssl_pkey_get_details($keys);
        $pubKey = $pubKey["key"];

        require "openssl.php";
        openssl_public_encrypt($_POST["data"],$encrypted, $pubKey);
        echo $encrypted;
        echo "<br><br>";
        echo $privKey;
    }

    ?>

這是解密的代碼:

<form action="decrypt.php" method="post">
Encrypted Text: <textarea name="encrypted" rows="10" cols="100"></textarea><br><br>
Key: <textarea name="key" rows="10" cols="100"></textarea><br>
<input type="submit">
</form>

<?php
    if($_SERVER["REQUEST_METHOD"] == "POST")
    {
        openssl_private_decrypt($_POST["encrypted"],$decrypted,$_POST["key"]);
        echo $decrypted;
    }
?>

似乎可以很好地加密數據,但是當我嘗試使用其他頁面解密時,出現錯誤:

openssl_private_decrypt()[function.openssl-private-decrypt]:密鑰參數不是有效的私鑰

我直接從加密文件的輸出中復制並粘貼了私鑰。 為什么會出現錯誤?

似乎可以加密數據了,

要調試的第一件事:您可以立即在加密頁面上解密加密的消息並獲得相同的純文本消息嗎?

openssl_private_decrypt()[function.openssl-private-decrypt]:密鑰參數不是有效的私鑰

您的代碼包含:

 openssl_private_decrypt($_POST["encrypted"],$decrypted,$_POST["key"]); 

嘗試以下方法:

$private = openssl_pkey_get_private($_POST['key']);
openssl_private_decrypt($_POST["encrypted"], $decrypted, $private);

關於安全性的一句話 :OpenSSL的RSA加密默認設置不安全

為了獲得最佳結果,在任何需要公鑰加密的現實應用程序中,請考慮切換到libsodium並僅使用crypto_box_seal API

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM