Php 使用带有Kohana 3.0框架的openssl返回错误
我的加密控制器的代码如下所示。这在my kohana安装的单独工作目录中运行良好。Php 使用带有Kohana 3.0框架的openssl返回错误,php,openssl,kohana,Php,Openssl,Kohana,我的加密控制器的代码如下所示。这在my kohana安装的单独工作目录中运行良好。 class Controller_Crypt extends Controller_Home { public static function Encrypt_This($sensitive) { //file path must be relative to directory, also derp. $pubkey = openssl_pkey_get_public('
class Controller_Crypt extends Controller_Home
{
public static function Encrypt_This($sensitive)
{
//file path must be relative to directory, also derp.
$pubkey = openssl_pkey_get_public('file://' . URL::site('../../private/public');
openssl_public_encrypt($sensitive, $cipher, $pubkey);
return base64_encode($cipher);
return $cipher;
}
public static function Decrypt_This($cipher, $pass)
{
$cipher = base64_decode($cipher);
//file path must be relative to directory, also derp.
$prkey = 'file://' . URL::site('../../private/private');
$privatekey = openssl_pkey_get_private($prkey, $pass);
openssl_private_decrypt($cipher, $sensitive, $privatekey);
return $sensitive;
}
}
但是,由于某些原因,我不明白我会遇到以下错误:
ErrorException [ Warning ]: openssl_private_decrypt() [function.openssl-private-decrypt]: key parameter is not a valid private key
我再一次在kohana应用程序之外单独检查了这段代码,它可以很好地对$cipher进行解密
我绝对不是使用openssl的专家,因此如果有人知道这里的问题所在并能给我一些启示,我将不胜感激。通过阅读相关文档,您似乎需要指定完整(绝对)路径 使用
URL::site
会附加http://
,因此您会得到:
file://http://localhost/../../private/private
这是无效的。我想这会导致下一个函数调用失败。解决办法是
PS:别忘了接受正确的答案,否则你将来的回复率会更低。Pixel有正确的诊断。你最终会想要这样的东西:
openssl\u pkey\u get\u public('file://'.APPPATH.'private/public')代码>
像这样的路径常量在index.php
中定义