我最近开始使用Vim加密文本文件(通过使用:X
命令并在提示符下输入加密密钥)。如上所述,当我重新打开文件并解密文本时,Vim会提示输入该密钥。
今天,我打开了其中一个加密文件,但令我惊讶的是,Vim 没有提示我输入任何密钥,只是显示加密文本。我当然重新打开了几次文件,但总是有相同的结果。(我在OS X上使用Vim 7.3。我发现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的默认加密,我理解为7.3中的blowfish(虽然我尝试使用openssl的一些其他密码命令,但不确定哪些,如果有的话,对应于pkzip,我理解为Vim的旧加密算法。)
:help encryption
除了尝试使用:set key=
以确保Vim提示我输入加密文件的密钥之外,我没有发现任何相关性,但它仍然没有。这是我在其他地方发现的有些类似问题中提出的唯一解决方案(例如,这个问题,尽管在我的情况下输入关键的sans提示符只是解释为以正常模式启动的命令)。
最后,知道所讨论的文件的开头(在所有加密垃圾之前)是“Salted”可能有一些用处; 如果Vim加密了加密密钥,盐会不会丢失(in,ahem,layman的条款)?
为了清楚起见,我的主要问题是:
- 是什么导致Vim不再将文件视为已加密且需要解密密钥?即使我无法恢复文本,我希望将来能够避免这种情况。例如,将加密文件与Dropbox同步一个大禁忌?
- 还有什么我可以尝试恢复文本吗?即使是暴力破坏似乎也是不可能的,因为它不是一个缺失的关键问题,但也许我滥用openssl或忽略了另一个Vim解决方案。
谢谢!
---
编辑:我注意到其他可能相关的东西。我试图复制这个问题,并且在此过程中我注意到了一个“好的”加密的Vim文件(即我可以成功解密的文件),如果我使用Quick Look查看文件或者我打开它在TextEdit中,我只看到一行文字,其中包含类似的内容VimCrypt~01!9‰◊ëMå Ø^efl.œ1b_öä˙ß≥
。但是当我打开我遇到问题的文件时,我会得到130行明显的密文,第一行以Salted
(如上所述)开头。
autoread
,smarttab
,autoindent
,wrap
,和showbreak
。