2017-05-05 19 views
0

e = 'password'とし、CryptoStreamで 'as9kio0736'に変換します。CryptoStream:なぜCryptoStreamMode.Writeを暗号化し、CryptoStreamMode.Readを復号化するのですか?

d = 'as9kio0736'とし、それを「CryptoStreamのパスワード」に変換しています。

私はdを「パスワード」に変換するときに、なぜCryptoStreamに書き込むとは思われませんか?

using (MemoryStream msEncrypt = new MemoryStream()) { 
    using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) { 
     using (StreamWriter swEncrypt = new StreamWriter(csEncrypt)) { 
      swEncrypt.Write(plainText); 
     } 
    } 
} 

using (MemoryStream msDecrypt = new MemoryStream(cipherText)) { 
    using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)) { 
     using (StreamReader srDecrypt = new StreamReader(csDecrypt)) { 
      plaintext = srDecrypt.ReadToEnd(); 
     } 
    } 
} 
+0

それぞれのストリームに書き込むため、それぞれのストリームから読み込みますか? – CodeCaster

+0

暗号ストリームに書き込むと、暗号化され、MemoryStreamに結果が書き込まれます(あなたの例では)。あなたは暗号ストリームから読み込みます - それはMemoryStreamから読み取り、解読して結果をあなたに返します。 – Evk

答えて

2

いずれの操作でもCryptoStreamをどちらの方向にも使用できます。それはあなたのデータがどこにあるのか、そしてあなたがそのデータで何をしたいのかだけです。

処理するデータがすでにストリームにある場合(ストリームが排水され廃棄されても問題ありません)、CryptoStreamを読み取りモードで使用し、データを読み込みます(cryptoStream.CopyTo(someOtherStream)を含む)。データがbyte[]であり、ストリームに書き込む場合は、CryptoStream.Writeを使用します。

.NETコアテストでは、両方の方法でサンプルを見つけることができます。

両方の暗号化のための読み取りを使用して

ヘック、それらは同じであってもファイルです。それはすべて好みの問題です。