我正在尝试使用PHP函数openssl_private_encrypt()在保存之前加密上传的文件(请参阅下面的代码片段),但是它的bool返回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);
有没有人知道为什么这不起作用?
由于
答案 0 :(得分:3)
我不确定PHP,但在C / C ++(OpenSSL)中,非对称加密(主要是RSA)适用于长度小于密钥大小的数据。通常它用于加密哈希值。如果要加密大量(大约256字节)数据量,最好使用AES或TriDES等对称(块)密码。顺便说一下,对称密码要快得多。
PS抱歉,我没有足够的声誉将这篇文章发表评论。
答案 1 :(得分:1)
您应该正确初始化私钥(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);