Следующий скрипт работает нормально. Zip-файл зашифрован, txt-файл создан и сразу же успешно расшифрован, а новый zip-файл успешно создан.
Однако, если я запускаю часть дешифрования только потом, он не сможет расшифровать текстовый файл. Он возвращает пустую переменную $original_plaintext
, а конечный zip-файл имеет размер 0. Ключ $ и $ 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);
}