vim 显示一个没有vi(m)的blowfish加密文件

s5a0g9ez  于 2024-01-08  发布在  其他
关注(0)|答案(1)|浏览(115)

我有一个文件,我已经加密在vivi -x myfile)与blowfish2加密(:setlocal cm=blowfish2)。我可以提供密码和编辑文件没有问题。
如果我想做的只是查看文件,是否有一个cat等价物可以接受密码并简单地显示内容?

k3bvogb1

k3bvogb11#

首先,我们谈论的是Vim,因为Vi没有加密功能。
我没有一个“没有Vim”的答案,但我有一个看起来和感觉有点像cat的答案。更多的解释可以在Pipe Vim buffer to stdout的答案中找到。
一般的想法是以批处理模式运行Vim(参见:help -s-ex),:print所有作为参数传递的文件,然后立即退出。
这就是下面这个别名的作用:

alias vimcat="vim -es -c'argdo %print' -c'qa!'"

字符串
需要注意的是,Vim处于静默模式。当遇到加密文件时,它会要求输入密钥,但提示符会被吞掉,看起来就像卡住了一样。如果你记住了这一点,你可以输入密钥并继续。
有两种方法可以缓解,您可以添加-x选项并在启动时立即输入密钥(也没有提示和两次)。另一种方法是通过-u key.vim传递一个配置文件,其中包含set key=<your secret key>行。当然,这意味着将密钥以纯文本形式保存在文件中,从安全Angular 来看可能是不可接受的。
我深入研究了一下,想找到一个更优雅的解决方案(没有成功)。Vim用魔法字符串VimCrypt~03!作为加密文件的前缀,其中03代表blowfish2加密。这后面是我假设的salt,加密文件内容排在最后。因此,难怪OpenSSL无法处理由Vim加密的文件(正如用户phd已经评论的那样).我尝试了一些简单的方法,比如用OpenSSL可能会消化的东西替换神奇的VimCrypt字符串,但没有成功。
下一步是深入研究Vim的Blowfish算法的源代码,在此之前我就停止了。
回顾过去几天的情况,我认为最有希望的解决方案是使用Vim的加密算法(这是开源的)。这可以变成一个独立的可执行文件,从stdin读取并写入stdout。另一个想法是创建一个OpenSSL插件,以便它可以与它一起使用。
这需要一些编码。

相关问题