打印(解密)一个 vim 加密文件

Pab*_*mez 12 encryption vim printing cat decryption

我使用-xvim 中的选项来加密文件。我阅读这些文件的次数比写入文件的次数要多得多,所以我总是使用 cat 然后记住它是加密的,因为它显示的内容..所以我必须使用 vim,输入密码,然后使用:q..退出。

有什么方法可以使用 cat (或其他命令,当然是在某处传递我的密码)并打印/获取内容?或者也许只有一个 vim 选项,它只打印内容而不进入编辑器?

Ach*_*eas 5

这不是一个优雅的解决方案——它既快速又脏——但它确实适用于单个文件,您可以将其用作 shell 脚本。

这是一个由三个命令组成的序列,它们执行以下操作:

  1. 在 vim 中打开文件(只读模式): vim -R
  2. 以纯文本格式保存文件并退出: -c ":set key= | sav ${filename}.plain | q
  3. cat 明文文件: cat ${filename}.plain
  4. (可选)删除纯文本文件: rm ${filename}.plain

最后,您可以拥有一个脚本,该脚本还将密码传递给 vim 命令。作为一个简单的脚本,它将是:

filename=$1
password=$2

vim -R -c ":set key= | sav ${filename}.plain | q" -- ${filename} <<< $password && cat ${filename}.plain && rm ${filename}.plain
Run Code Online (Sandbox Code Playgroud)

其中第一个参数是文件名,第二个参数是密码。

当然,您应该记住以下几点:

  • 确保您没有覆盖碰巧具有 name 的现有文件${filename}.plain
  • 密码将出现在命令行上并保存在历史记录中。如果您希望每次都提示输入密码,请移除该<<< $password部件。


har*_*ymc 5

看看开源vimdecrypt

用于解密 vim-blowfish 加密文件的命令行工具。

从 7.3 版开始,vim 提供强大的内置河豚加密/解密,对于某些目的,这比通过 gnupg 过滤更方便。不幸的是,生成的文件只能由 vim 读回,这使得它们很难在批处理或脚本中使用。如果需要具有 vim 依赖项和大小的程序来解锁加密数据,那么加密数据的寿命也是一个问题。

Vimdecrypt 从 vim 源中提取两个相关文件,blowfish.c 和 sha256.c,并在一个简单的命令行工具中连接它们。从文件中读取数据,解密后的数据写入标准输出。

vimdecrypt path_to_data
Run Code Online (Sandbox Code Playgroud)

密码是通过 GNU getpass 获得的,它不会干扰 stdin/stdout 重定向。

Vim 的配置系统被完全剥离,这可能会破坏对它开发的 32 位 i386 linux 以外的其他平台的支持。由于这两个相关文件来自未修改的 vim 项目,因此通过修复 vim.h 头文件来恢复对其他平台的支持应该是微不足道的。

  • 您正在使用旧的基于 pkzip 的加密(已损坏,但出于兼容性原因仍然是默认设置)而不是新的(从 Vim 7.3 开始)基于河豚的系统。我知道河豚是 VimCrypt~02,我想河豚 2 是 VimCrypt~03。您可以将加密转换为更强大的河豚或河豚2,如[此处所述](http://vim.wikia.com/wiki/Encryption),然后 vimdecrypt 可能对您有用。 (2认同)