web-dev-qa-db-ja.com

vim暗号化ファイルを印刷(復号)する

Vimの-xオプションを使用してファイルを暗号化します。私はこのファイルを書き込むよりもはるかに頻繁に読み取るので、常にcatを使用し、表示内容のために暗号化されていることを覚えています。したがって、vimを使用し、パスワードを入力してから、:qを使用して終了する必要があります。

Cat(またはもちろん別のコマンド、もちろん私のパスワードをどこかに渡す)を使用して内容を印刷または取得する方法はありますか?それとも、エディターに入らずにコンテンツのみを印刷するvimオプションがあるだけですか?

10

オープンソースを見てください vimdecrypt

Vim-blowfishで暗号化されたファイルを復号化するためのコマンドラインツール。

バージョン7.3以降、vimは強力な組み込みのblowfish暗号化/復号化を提供します。これは、特定の目的では、gnupgを介したフィルタリングよりも便利です。残念ながら、結果のファイルはvimでしか読み戻せないため、バッチ処理やスクリプトで使用するのは困難です。また、vimの依存関係とサイズを持つプログラムがロックを解除する必要がある場合は、暗号化されたデータの寿命が問題になります。

Vimdecryptは、vimソースから2つの関連ファイル、blowfish.cとsha256.cを取り出し、単純なコマンドラインツールでそれらをインターフェイスします。データはファイルから読み取られ、復号化されたデータはstdoutに書き込まれます。

vimdecrypt path_to_data

パスワードはGNU getpassを介して取得され、stdin/stdoutリダイレクトに干渉しません。

Vimのconfigureシステムは完全に削除されており、開発された32ビットi386Linux以外のプラットフォームのサポートが壊れている可能性があります。 2つの関連ファイルは変更されていないvimプロジェクトから取得されているため、vim.hヘッダーを修正して他のプラットフォームでサポートを復元するのは簡単です。

5
harrymc

これは洗練された解決策ではありません-すばやく簡単です-しかし、単一のファイルで機能し、シェルスクリプトとして使用できます。

これは、以下を実行する3つのコマンドのシーケンスです。

  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

ここで、最初の引数はファイル名、2番目の引数はパスワードです。

もちろん、覚えておくべきことがいくつかあります。

  • ${filename}.plainという名前の既存のファイルを上書きしないようにしてください。
  • パスワードはコマンドラインに表示され、履歴に保存されます。毎回パスワードの入力を求められる場合は、<<< $passwordの部分を削除してください。
5
Achilleas