以下脚本可以正常工作。对该zip进行加密,创建txt文件并立即将其成功解密,并成功创建新的zip。
但是,如果我仅随后运行解密部分,它将无法解密txt文件。它返回一个空的$original_plaintext
变量,最终的zip大小为0。第二次运行时,$ key和$ iv不变。安全性不是问题-我只需要一个加扰的文本文件,然后以后就可以对其解密。
$key = "sometext";
$iv = "someothertext";
$cipher = "aes-128-gcm";
$tag = NULL;
$fileRoot = "sql_2018_11_10";
if (in_array($cipher, openssl_get_cipher_methods())) {
// Encrypt
$plaintext = file_get_contents("tmp/$fileRoot.zip");
$ciphertext = openssl_encrypt($plaintext, $cipher, $key, $options=0, $iv, $tag);
file_put_contents("tmp/enc_$fileRoot.txt", $ciphertext);
// Decrypt
$ciphertext = file_get_contents("tmp/enc_$fileRoot.txt");
$original_plaintext = openssl_decrypt($ciphertext, $cipher, $key, $options=0, $iv, $tag);
file_put_contents("tmp/uenc_$fileRoot.zip", $original_plaintext);
}