使用openssl_encrypt加密文件

时间:2012-06-27 09:40:43

标签: php openssl

我见过使用openssl_encrypt从命令行加密文件的解决方案,如下所示:

file_put_contents ('./file.encrypted',openssl_encrypt ($source, $method, $pass, true, $iv));

$exec = "openssl enc -".$method." -d -in file.encrypted -nosalt -nopad -K ".strtohex($pass)." -iv ".strtohex($iv);

或者,使用openssl_encrypt加密字符串,如下所示:

$string = 'It works ? Or not it works ?';
$pass = '1234';
$method = 'aes128';
file_put_contents ('./file.encrypted', openssl_encrypt ($string, $method, $pass));

但不是直接从代码加密文件的东西。那是为什么?

如果我想从代码中加密2-10mb文件而不是为每个文件打开单独的进程(如使用命令行会发生什么),该怎么办?

我正在寻找能够为我做的代码示例,例如:

$myfile = 'files/myfile.doc';
$pass = '1234';
$method = 'aes128';
file_put_contents ('./file.encrypted', openssl_encrypt ($myfile, $method, $pass));

由于

1 个答案:

答案 0 :(得分:0)

没有理由不能使用file_get_contents()将文件读入变量,使用openssl_public_encrypt()对其进行加密,然后使用fopen()fwrite()和fclose()将其保存到磁盘,但可能是使用这种方法限制你可以加载到内存中的文件大小。

在脚本中执行文件加密可能还会产生性能开销,但您应该能够轻松地对此进行测试。