要在 PHP 中使用 fopen 函数实现文件的加密和解密,你可以使用对称加密算法,例如 AES
首先,确保已安装了 OpenSSL 扩展。大多数环境中默认已经安装。
加密文件:<?phpfunction encryptFile($inputFilename, $outputFilename, $key) { $cipher = "AES-256-CBC"; $ivlen = openssl_cipher_iv_length($cipher); $iv = openssl_random_pseudo_bytes($ivlen); $inputFile = fopen($inputFilename, 'rb'); $outputFile = fopen($outputFilename, 'wb'); // 将初始化向量写入加密文件 fwrite($outputFile, $iv); while (!feof($inputFile)) { $plaintext = fread($inputFile, 16 * 1024); $ciphertext = openssl_encrypt($plaintext, $cipher, $key, OPENSSL_RAW_DATA, $iv); fwrite($outputFile, $ciphertext); } fclose($inputFile); fclose($outputFile);}$inputFilename = 'plaintext.txt';$outputFilename = 'encrypted.txt';$key = 'your-32-character-key';encryptFile($inputFilename, $outputFilename, $key);?>解密文件:<?phpfunction decryptFile($inputFilename, $outputFilename, $key) { $cipher = "AES-256-CBC"; $ivlen = openssl_cipher_iv_length($cipher); $inputFile = fopen($inputFilename, 'rb'); $outputFile = fopen($outputFilename, 'wb'); // 读取加密文件中的初始化向量 $iv = fread($inputFile, $ivlen); while (!feof($inputFile)) { $ciphertext = fread($inputFile, 16 * 1024); $plaintext = openssl_decrypt($ciphertext, $cipher, $key, OPENSSL_RAW_DATA, $iv); fwrite($outputFile, $plaintext); } fclose($inputFile); fclose($outputFile);}$inputFilename = 'encrypted.txt';$outputFilename = 'decrypted.txt';$key = 'your-32-character-key';decryptFile($inputFilename, $outputFilename, $key);?>这两个示例中的 encryptFile 和 decryptFile 函数分别用于加密和解密文件。请注意,密钥应该是随机生成的,并且足够长(在这个例子中,我们使用了一个 32 个字符的密钥)。在实际应用中,你需要确保密钥的安全存储。


