[英]openssl_seal problems
我在使用PHP中的openssl_seal函数加载用于加密的公共密钥时遇到一些问题...
我已经使用openSSL命令行工具创建了公钥和私钥:
openssl genrsa -des3 -out private.pem 1024
openssl rsa -in private.pem -out public.pem -outform PEM -pubout
但是,当我在PHP代码中运行它时,出现以下错误:
openssl_seal() [function.openssl-seal]: Don't know how to get public key from this private key
openssl_seal() [function.openssl-seal]: not a public key (1th member of pubkeys)
当我使用以下命令验证公用密钥时:openssl verify public.pem,我得到:
unable to load certificate
1876:error:0906D06C:PEM routines:PEM_read_bio:no start line:.\crypto\pem\pem_lib
.c:648:Expecting: TRUSTED CERTIFICATE
有人知道为什么会这样吗?
PHP代码:
public function encrypt($valueToEncrypt, $publicKeyFile)
{
$pk = file_get_contents($publicKeyFile);
$publicKey = openssl_pkey_get_public($pk);
$encrypted = '';
$a_envelope = array();
$a_key = array($publicKey);
if (openssl_seal($valueToEncrypt, $encrypted, $a_envelope, $a_key) === FALSE)
{
while ($msg = openssl_error_string())
echo $msg . "<br />\n";
die('Failed to encrypt data!');
}
openssl_free_key($publicKey);
....
对于遇到相同问题的任何人,此问题都与在Windows上安装xampp有关。 在全新安装的php上的命令行上运行正常。
除了StuffandBlah的回答外:实际上,它与Apache和Windows中XAMPP中的PHP中不同的OpenSSL版本有关。 这里有一个帖子 ,如何解决这个问题(复制的DLL)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.