打印(解密)vim 加密文件

打印(解密)vim 加密文件

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

有没有办法使用 cat(或其他命令,当然要将我的密码传递到某个地方)并只打印/获取内容?或者也许只有一个 vim 选项,只打印内容而不进入编辑器?

答案1

看看开源vim解密

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

从 7.3 版开始,vim 提供强大的内置 blowfish 加密/解密功能,对于某些目的来说,这比通过 gnupg 进行过滤更方便。遗憾的是,生成的文件只能由 vim 读取,这使得它们很难用于批处理或脚本编写。此外,如果需要具有 vim 依赖性和大小的程序来解锁加密数据,那么加密数据的寿命也是一个问题。

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

vimdecrypt path_to_data

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

Vim 的配置系统被完全剥离,这可能会破坏对除其开发所基于的 32 位 i386 Linux 之外的其他平台的支持。由于两个相关文件取自未修改的 vim 项目,因此通过修复 vim.h 标头恢复对其他平台的支持应该很简单。

答案2

这不是一个优雅的解决方案 - 它快速而又肮脏 - 但它确实适用于单个文件,您可以将它用作 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

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

当然,你还需要记住以下几点:

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

相关内容