【问题标题】:Encrypt and decrypt with the same private key?使用相同的私钥加密和解密?
【发布时间】:2026-01-22 14:35:01
【问题描述】:

我正在研究一些加密,直到现在我都假设您需要一个公钥来解密一个已被私钥加密的值。

直到我看到 openssl_private_encrypt()openssl_private_decrypt() 使用同一个键。

我在这里有点困惑。在用私钥加密后,您通常不需要公钥来再次解密一个值吗?这不就是整个asymmetric encryption的意思吗?

在 PHP 上下文中很难找到关于这类主题的可靠信息,所以我希望有人能告诉我更多关于这方面的信息。

感谢阅读。

【问题讨论】:

    标签: php encryption openssl php-openssl


    【解决方案1】:

    如果您使用私钥加密某些内容,然后使用公钥对其进行解密,那么唯一可以确定的是您是发送者。

    如果你用公钥加密某些东西,用私钥解密它,你确定只有接收者才能打开它。

    最好的安全性是当你用你的私钥和其他人的公钥加密某些东西时,这样对方就可以用他的私钥和你的公钥解密它。

    所以是的:您可以使用私钥进行加密和解密。

    【讨论】:

    • 但是用 openssl_public_decrypt() 反转 openssl_private_encrypt() 这样的东西在 PHP 中是行不通的。所以这不完全正确?
    • @Stephan-v: secure.php.net/manual/en/function.openssl-public-decrypt.php "openssl_public_decrypt() 解密之前通过openssl_private_encrypt() 加密的数据并将结果存储到解密文件中。"
    • 我的错我的意思是openssl_private_encrypt()openssl_private_decrypt()