我有一个在
vi
(vi -x myfile
) 中使用 Blowfish2 加密 (:setlocal cm=blowfish2
) 加密的文件。我可以毫无问题地提供密码并编辑文件。
如果我只想查看文件,是否有一个
cat
等效项可以获取密码并简单地显示内容?
首先,我们谈论 Vim,因为 Vi 没有加密功能。
我没有一个“没有 Vim”的答案,但我确实有一个看起来和感觉有点像
cat
的答案。可以从 Pipe Vim buffer to stdout 的答案中得到一些灵感
:help -s-ex
),:print
所有作为参数传递的文件并随后立即退出。
基本上,这就是以下别名的作用:
alias vimcat="vim -es -c'argdo %print' -c'qa!'"
主要需要注意的是,Vim 处于静默模式,因此当遇到加密文件时,它会要求输入密钥,但提示符会被吞掉,因此看起来会卡住。如果您记住这一点,您可以输入密钥并继续。
有两种缓解方法,您可以添加
-x
选项并在启动时立即输入密钥(也无需提示并输入两次)。另一种方法是传递一个包含 -u key.vim
的配置文件 set key=<your secret key>
。当然,这意味着将密钥以纯文本形式保存在文件中,从安全角度来看,这可能是不可接受的。
我深入挖掘以找到更优雅的解决方案(但没有成功)。 Vim 在加密文件前添加魔术字符串
VimCrypt~03!
,其中 03
代表 blowfish2
加密。接下来是我认为是盐的内容,加密的文件内容排在最后。因此,难怪 OpenSSL 无法处理由 Vim 加密的文件(正如用户 phd 已经评论的那样)。我尝试了简单的方法,例如用 OpenSSL 可能消化的内容替换神奇的 VimCrypt 字符串,但这没有成功。
下一步是深入研究 Vim 的 Blowfish 算法的源代码,我在此之前就停止了。