我试图使用PHP函数openssl_private_encrypt()来加密之前上传的文件在保存它(见下面的代码片段),但是它的布尔是返回false和加密的内容回报返回什么。 正在显示或报告没有错误。
$data = file_get_contents($_FILES['files']['tmp_name'][0]);
openssl_private_encrypt($data,$encrypted,$key);
$hash = sha1($encrypted);
file_put_contents('/path/to/folder/'.$hash,$encrypted);
没有人有任何想法,为什么这不工作?
谢谢
我不知道PHP,但在C / C ++(OpenSSL的)的非对称加密(RSA为主)适用于长度小于密钥大小的数据。 并且通常它被用于加密哈希值。 如果要加密大(中〜256字节)的数据,你最好使用像AES或TriDES一些对称的(块)密码的数量。 对称加密法的方式要快得多。
PS对不起,我没有足够的信誉来把这个帖子变成注释。
你应该正确初始化私有密钥( http://pl1.php.net/manual/en/function.openssl-pkey-get-private.php )
$key = openssl_pkey_get_private ('file://path/to/file.pem');
$data = file_get_contents($_FILES['files']['tmp_name'][0]);
openssl_private_encrypt($data,$encrypted,$key);
$hash = sha1($encrypted);
file_put_contents('/path/to/folder/'.$hash,$encrypted);