Недавно я начал использовать Vim для шифрования текстовых файлов (с помощью команды :X
и ввода ключа шифрования в командной строке). Как задокументировано, Vim запрашивает этот ключ при повторном открытии файла и расшифровывает текст.
Сегодня я открыл один из этих зашифрованных файлов, но, к моему удивлению, Vim не запрашивал у меня ни одного ключа, а просто отображал зашифрованный текст. Я, конечно, открывал файл еще несколько раз, но всегда с тем же результатом. (Я использую Vim 7.3 на OS X. Я не нашел никакой разницы в поведении в MacVim по сравнению с версией без GUI.)
У меня есть три смутных догадки относительно того, что может быть причиной этой проблемы:
- Я переименовал данный файл - возможно, несколько раз - после того, как он был зашифрован. К сожалению, я не могу вспомнить, успешно ли расшифровывал файл после последнего переименования.
- Этот файл хранится в моей папке Dropbox, поэтому, если файл каким-либо образом был изменен на сервере Dropbox, эта версия, вероятно, перезаписала бы мою (ранее хорошую) локальную версию. (Однако, когда я пытаюсь восстановить старую версию файла через Dropbox, я нахожу только одну версию файла, и я также не могу расшифровать ее.)
- Объединяя два вышеупомянутых: я фактически переименовал файл, чтобы он имел расширение
.crypt
, не думая, что это будет иметь значение локально, но я вижу, что Dropbox фактически идентифицирует этот файл (в столбцеKind
) какfile crypt
. Возможно, Dropbox каким-то образом обрабатывает этот файл по-разному, если распознает его как зашифрованный файл? (Однако, когда я сохраняю незашифрованный текстовый файл с расширением.crypt
, у меня не возникает проблем при его чтении.)
Я попытался использовать openssl для восстановления файла, в частности, как openssl bf -d -in [encrypted file] -out [decrypted file]
. Но это сообщает о bad decrypt
1948:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:/SourceCache/OpenSSL098/OpenSSL098-47/src/crypto/evp/evp_enc.c:330:
(или небольшие изменения).
(Позвольте мне предварительно уточнить, что я на 99% уверен, что это не тот случай, когда я использовал неправильный ключ шифрования, поскольку в прошлом я неоднократно успешно расшифровывал файл, а теперь Vim даже не запрашивает ключ , Я также дважды проверил, что я использую правильный ключ с openssl.)
Я использовал стандартное шифрование Vim, которое, как я понимаю, было Blowfish в 7.3 (хотя я пробовал несколько других команд шифрования с openssl, но не был уверен, что, если таковые имеются, соответствовало pkzip, который я понимаю как более старый алгоритм шифрования Vim.)
Я не нашел ничего релевантного в :help encryption
кроме как попытаться использовать :set key=
чтобы Vim запрашивал у меня ключ для зашифрованных файлов, но он все равно этого не делает. Это было единственное решение, предложенное в несколько похожих вопросах, которые я нашел в другом месте (например, этот вопрос, хотя ввод подсказки «ключ без ключа» в моем случае просто интерпретируется как команды, начинающиеся в обычном режиме).
Наконец, может быть полезно знать, что начало рассматриваемого файла (перед всем мусором шифрования) является "Соленым"; если Vim засолил ключ шифрования, может ли соль как-то пропасть (в терминах непрофессионала)?
Просто чтобы прояснить, мои основные вопросы:
- Что заставляет Vim больше не видеть файл как зашифрованный и нуждающийся в ключе дешифрования? Даже если я не смогу восстановить текст, я бы хотел избежать этого в будущем, если это возможно. Например, является ли синхронизация зашифрованного файла с Dropbox большой проблемой?
- Есть ли что-нибудь еще, что я мог бы попытаться восстановить текст? Даже грубое принуждение кажется невозможным, поскольку это не проблема отсутствия ключа, но, возможно, я неправильно использую openssl или игнорирую другое решение Vim.
Спасибо!
---
РЕДАКТИРОВАТЬ: я заметил кое-что еще, что может иметь отношение. Я попытался воспроизвести эту проблему, и в ходе этого я заметил, что с помощью "хорошего" зашифрованного файла Vim (т. Е. Файла, который я могу успешно расшифровать), если я использую Quick Look для просмотра файла или если я его открываю в TextEdit я вижу только одну строку текста, которая читает что-то вроде VimCrypt~01!9‰◊ëMå Ø^efl.œ1b_öä˙ß≥
. Но когда я открываю файл, с которым у меня возникли проблемы, я вместо этого получаю 130 строк зашифрованного текста, причем первая строка начинается с Salted
(как упоминалось выше).