$passphrase = "';__!!??()[]";
$passphrase = escapeshellarg($passphrase);
shell_exec("openssl\openssl.exe genrsa -des3 -passout pass:${passphrase} -out test.key 2048");
#Here the password works
echo system("openssl\openssl.exe rsa -in test.key -passin pass:${passphrase} -noout -text");
此代码可以正常使用openssl生成密钥。我也可以毫无问题地阅读密钥。但是当我想从命令行读取密钥时,我无法解密它。我使用与代码中完全相同的命令。唯一的区别是,我将密码复制到命令行,因为它是在代码中写入的。这总是因解密错误而失败。
如何解决此问题?
编辑:为了更清楚。从终端运行时,这不起作用:
openssl\openssl.exe rsa -in test.key -passin pass:"';__!!??()[]" -noout -text