2

我正在尝试使用 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);

有没有人知道为什么这不起作用?

谢谢

4

2 回答 2

5

我不确定 PHP,但在 C/C++(OpenSSL)中,非对称加密(主要是 RSA)适用于长度小于密钥大小的数据。通常它用于加密哈希值。如果您想加密大量(更多约 256 字节)数据,您最好使用一些对称(块)密码,如 AES 或 TriDES。顺便说一下,对称密码要快得多。

PS对不起,我没有足够的声誉将这篇文章放入评论中。

于 2013-10-22T08:47:40.900 回答
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);
于 2013-10-22T10:32:57.423 回答