【发布时间】:2012-08-08 00:15:21
【问题描述】:
我有一个问题让我发疯。
我创建了一对钥匙在做:
$res = openssl_pkey_new(array('private_key_bits' => 2048));
/* Extract the private key from $res to $privKey */
openssl_pkey_export($res, $privKey);
/* Extract the public key from $res to $pubKey */
$pubKey = openssl_pkey_get_details($res);
$pubKey = $pubKey["key"];
使用此代码,我有 $pubKey 和 $privKey。
我可以正确加密/解密,但我对解密有很大的疑问。
目前我正在加密数据:
openssl_public_encrypt($data, $encrypted, $pubKey);
它正确加密了我的数据,但阅读 PHP 文档后,我发现:
http://php.net/manual/en/function.openssl-public-decrypt.php
我可以使用 PUBLIC KEY 解密数据吗?为什么??
我知道公钥对加密数据有用,但只有私钥的所有者才能解密数据。
如果我可以使用公钥解密数据,让知道公钥的用户轻松解密消息。
有人可以向我解释一下吗?我正在寻找一种使用两个密钥的方法,第一个用于加密,第二个(仅第二个)用于解密。
谢谢
【问题讨论】:
-
您可以使用任一密钥进行加密。您可以尝试使用任一密钥解密,但只有其中一个会成功。无论使用哪一个加密,只有相反的才能成功解密。在某些情况下,您使用私钥加密并使用公钥解密 - 例如,作为您有权访问私钥的证明。
-
您提到的文档没有返回解密的消息。它返回私钥的所有者是否加密了消息。为了解密消息,您需要私钥。
标签: php openssl public-key-encryption