Vim 在读取加密文件时不再提示输入加密密钥;为什么不呢?我该如何恢复呢?

Vim 在读取加密文件时不再提示输入加密密钥;为什么不呢?我该如何恢复呢?

我最近开始使用 Vim 加密文本文件(通过使用命令:X并在提示符下输入加密密钥)。如文档所述,当我重新打开文件并解密文本时,Vim 会提示输入该密钥。

今天,我打开了其中一个加密文件,但令我惊讶的是,Vim没有提示我输入任何密钥,然后只显示加密文本。当然,我多次重新打开了文件,但结果总是一样。(我在 OS X 上使用 Vim 7.3。我发现 MacVim 与非 GUI 版本的行为没有区别。)

对于导致此问题的原因,我有三个模糊的预感:

  1. 在加密后,我可能不止一次重命名过该文件。不幸的是,我记不清自从上次重命名后是否成功解密过该文件。
  2. 该文件存储在我的 Dropbox 文件夹中,因此如果文件在 Dropbox 服务器上以某种方式被更改,该版本可能会覆盖我(之前良好的)本地版本。(但是,当我尝试通过 Dropbox 恢复文件的旧版本,我只找到该文件的一个版本,而且我也无法解密。)
  3. 结合以上两点:我实际上重命名了文件,使其具有.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 的默认加密,据我所知在 7.3 中是 blowfish(尽管我尝试了 openssl 的一些其他密码命令,但不确定哪一个(如果有的话)对应于 pkzip,据我所知这是 Vim 的较旧的加密算法。)

:help encryption除了尝试使用以确保 Vim 提示我输入加密文件的密钥外,我找不到任何相关内容:set key=,但仍然没有。这是我在其他地方找到的类似问题中提出的唯一解决方案(例如,这个问题,尽管在我的情况下键入无提示键只是被解释为在正常模式下启动的命令)。

最后,了解所讨论文件的开头(在所有加密垃圾之前)是“加盐的”可能会有所帮助;如果 Vim 已对加密密钥加盐,那么盐是否会以某种方式丢失(用外行人的话说)?

需要明确的是,我的主要问题是:

  1. 是什么原因导致 Vim 不再将文件视为加密文件并需要解密密钥?即使我无法恢复文本,如果可能的话,我希望将来能够避免这种情况。例如,将加密文件与 Dropbox 同步是否是大忌?
  2. 我还可以尝试其他方法来恢复文本吗?即使是暴力破解似乎也不可能,因为这不是缺少密钥的问题,但也许我误用了 openssl 或忽略了其他 Vim 解决方案。

谢谢!

———

编辑:我注意到了其他可能相关的内容。我尝试复制此问题,在此过程中,我注意到,对于“良好”的加密 Vim 文件(即我可以成功解密的文件),如果我使用“快速查看”查看文件或在 TextEdit 中打开它,我只会看到一行文本,内容类似于VimCrypt~01!9‰◊ëMå Ø^efl.œ1b_öä˙ß≥。但是,当我打开有问题的文件时,我得到的却是 130 行明显的密文,第一行以 开头Salted(如上所述)。

答案1

我将按不按顺序回答您的疑问的各个部分,希望不会造成混淆。

从您的编辑来看,我认为您的文件已损坏,Vim 无法打开它。所有使用 Vim 内部加密加密的文件都应以“ VimCrypt~N”开头,其中“ N”是数字(目前仅支持 01 和 02)。您的文件以“ Salted”开头令人困惑,但可以确认 Vim 不会将该文件识别为 Vim 加密文件。

移动或重命名文件不会影响 Vim 将其识别为加密文件的能力,只要您继续使用正确的密钥,它就应该能够毫无问题地解密。文件扩展名对 Vim 来说同样毫无意义,因为它会查看文件内容来确定它是否是 Vim 加密文件。

我还将我的一个 Vim 加密文件保存在 Dropbox 中,并且没有遇到它被损坏的问题。

你提到你相信这Blowfish是 Vim 的默认加密方案。这是不是情况就是这样。默认是zip“便宜又快速”的,而且(可能)容易破解。它也是 Vim 支持的第一个加密方法,这就是为什么它成为事实上的默认方法。如果你想要默认使用,Blowfish你需要在你的 vimrc 中输入以下内容:

:set cryptmethod=blowfish

实际上,您可以确定文件使用了哪种方法,而无需在 Vim 中打开它,只需在寻呼机或其他编辑器中打开文件(甚至可以在 Vim 中打开它而不输入任何键)并查看上面提到的标题前缀文本即可。如果它显示“ VimCrypt~01”,则表示该zip方法。如果它显示“ VimCrypt~02”,则表示使用更强大的Blowfish方法。(您会注意到,您在编辑中发布的标题示例显示“ 01”。)

如果您当前正在编辑解密文件,通过输入“:set cryptmethod?”(问号是命令的一部分),您还应该能够确定使用了哪种方法。

相关内容