0

他のスレッドは、vb の file.encrypt が W7HE でサポートされていないことをカバーしています。しかし、私はそれを回避する簡単な方法を見つけることができず、暗号化について私が知っている唯一の他の機能は次のものを使用しています:

Imports system.security.Cryptography

そして、次の行に沿って実行します

Dim rsa As New RSACryptoServiceProvider
Dim encoder As New UTF8Encoding

など

ただし、それは文字列のみを処理するため、ファイル全体を暗号化する必要があります。どんなアイデアでも大歓迎です

4

2 に答える 2

0

file.encrypt は、実際には透過的なEFS を使用します。暗号化; ユーザー アカウントにはマスター証明書が保存されるため、そのアカウントでログインしたユーザーは、任意のアプリケーションでファイルの内容にアクセスできます。必要なものによっては、それがまったく必要ない場合があります。アプリだけで EFS の動作を再現したい場合は、マスター パスワードをユーザーのプライベート ファイルのどこかに保存し、データ ファイルを「キー」セクションと「データ」セクションに分割し、キーをマスター パスワードで暗号化するだけです。(Real EFS にはいくつかの微妙な点があります。多くの異なるユーザーのパスワードを個別に暗号化できるため、異なるユーザーがファイルごとにアクセスできるようになり、メイン ユーザーのパスワードが失われた場合の回復オプションが提供されます。また、ユーザーのパスワードを使用してファイルを暗号化します。マスター パスワードなので、誰かがパスワードを変更すると、ファイルを開くことができなくなります。)

基本的な方法は、ユーザーにパスワードの入力を求め、それを使用して一度に文字列を暗号化するのではなく、ファイル全体を一度に暗号化または復号化することです。暗号化されていない方法でファイルをシリアル化し、そのバイト配列全体をEncryptStringToBytes_Aesのようなものに渡します。文字列の代わりにバイトを書き込んでいる場合の唯一の違いは次のとおりです。

using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
    {
        swEncrypt.Write(plainText);
    }

csEncrypt.Write(plainText);

いずれにせよ、使用する実際の暗号にはAesCryptoServiceProviderではなくRSACryptoServiceProviderを使用します。これは、AES および同様のアルゴリズムに渡されるキー/パスワードのトップレベルの認証と暗号化に使用されます。ファイル全体を暗号化するために使用されることはめったになく、使用すると非常に遅くなります。

于 2012-09-09T04:14:31.500 に答える