最近、Vimを使用してテキストファイルを暗号化し始めました(:X
コマンドを使用し、プロンプトで暗号化キーを入力します)。文書化されているように、ファイルを再度開いてテキストを復号化すると、Vimはそのキーの入力を求めます。
今日、私はそれらの暗号化されたファイルの1つを開きましたが、驚いたことにVimはしませんでしたキーの入力を求められ、暗号化されたテキストが表示されました。もちろん、ファイルをさらに数回再度開きましたが、常に同じ結果になりました。 (OSXでVim7.3を使用しています。MacVimと非GUIバージョンの動作に違いはありませんでした。)
何がこの問題を引き起こしているのかについて、私には3つの漠然とした勘があります。
.crypt
拡張子になるように変更しましたが、Dropboxが実際にこのファイルを識別していることがわかります(Kind
列) file crypt
として。おそらく、Dropboxが暗号化されたファイルとして認識した場合、Dropboxはそのファイルを何らかの方法で異なる方法で処理しましたか? (ただし、拡張子が.crypt
の暗号化されていないテキストファイルを保存すると、問題なく読み取ることができます。)特にopenssl bf -d -in [encrypted file] -out [decrypted file]
として、opensslを使用してファイルを回復しようとしました。しかし、これはbad decrypt 1948:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:/SourceCache/OpenSSL098/OpenSSL098-47/src/crypto/evp/evp_enc.c:330:
(またはわずかなバリエーション)を報告します。
(過去に何度もファイルの復号化に成功したため、間違った暗号化キーを使用した場合ではないことを99%確信していることを先取りして明確にしておきます。現在、Vimはキーの入力を要求していません。 。opensslで正しいキーを使用していることも再確認しました。)
7.3ではblowfishであると理解しているVimのデフォルトの暗号化を使用しました(opensslで他のいくつかの暗号化コマンドを試しましたが、どれがpkzipに対応しているかはわかりませんでしたが、Vimの古い暗号化アルゴリズムであると理解しています)。
:help encryption
を使用して、Vimが暗号化されたファイルのキーの入力を要求することを確認する以外は、:set key=
に関連性はありませんでしたが、それでもそうではありません。これは、他の場所で見つけた似たような質問で提案された唯一の解決策でした(たとえば、 この質問 ですが、私の場合はプロンプトなしのキーを入力すると、通常モードで開始するコマンドとして解釈されます)。
最後に、問題のファイルの先頭(すべての暗号化ガベージの前)が「Salted」であることを知っておくと便利な場合があります。 Vimが暗号化キーをソルトした場合、ソルトがどういうわけか失われる可能性がありますか(つまり、素人の言葉で)?
明確にするために、私の主な質問は次のとおりです。
ありがとう!
———
編集:私は関連するかもしれない何か他のものに気づきました。私はこの問題を再現しようとしましたが、その過程で、「適切な」暗号化されたVimファイル(つまり、正常に復号化できるファイル)を使用して、クイックルックを使用してファイルを表示したり開いたりした場合に気付きました。テキストエディットでは、VimCrypt~01!9‰◊ëMå Ø^efl.œ1b_öä˙ß≥
のようなテキストを1行しか表示しません。しかし、問題のあるファイルを開くと、代わりに130行の見かけの暗号文が表示され、最初の行はSalted
で始まります(前述のとおり)。
クエリのセクションを順不同で扱います。混乱しないことを願っています。
あなたの編集から、あなたのファイルはVimが開くことができないほど破損しているように見えます。 Vimの内部暗号化で暗号化されたすべてのファイルは「VimCrypt~N
"ここで、" N
"は数字です(現在、01と02のみがサポートされています)。ファイルが" Salted
"で始まることは混乱を招きますが、Vimがファイルを認識しないことを確認します。 Vim暗号化ファイルとして。
ファイルを移動したり名前を変更したりしても、Vimがファイルを暗号化されていると認識する機能に影響を与えることはなく、正しいキーを使い続ける限り、問題なく復号化できます。ファイル名拡張子は、ファイルの内容を調べてVimで暗号化されたファイルかどうかを判断するため、Vimにとっても同様に無意味です。
また、Vimで暗号化されたファイルの1つをDropboxに保存していますが、破損する問題はありません。
あなたはBlowfish
がVimのデフォルトの暗号化スキームであると信じていると述べました。これはnotの場合です。デフォルトはZip
で、これは「安価で高速」であり、(おそらく)壊れやすいものです。これはVimがサポートする最初の暗号化方式でもあり、それが事実上のデフォルトとなった理由です。デフォルトでBlowfish
にしたい場合は、vimrcに以下を入れる必要があります。
:set cryptmethod=blowfish
ポケットベルやその他のエディターでファイルを開いて(またはVimで開いてキーを入力せずに)、上記のヘッダープレフィックステキストを確認することで、Vimでファイルを開かなくても実際にファイルで使用されたものを特定できます。 「VimCrypt~01
"それはZip
メソッドです。" VimCrypt~02
"より強力なBlowfish
メソッドを使用します(編集で投稿したヘッダーの例は" 01
"。)
また、「:set cryptmethod?」と入力して、復号化されたファイルを現在編集している場合に、どの方法が使用されているかを判断できるはずです。 (疑問符はコマンドの一部です)。