2

AES 192 でファイルを暗号化し、ソケット経由でクライアントに送信する必要があります。このコードを使用してファイルを暗号化しています。

string outputFile = "crypted";

            //Confidentiality
            RijndaelManaged AES192Confidentiality = new RijndaelManaged();
            AES192Confidentiality.KeySize = 192;
            AES192Confidentiality.BlockSize = 192;
            AES192Confidentiality.IV = ConfIV;
            AES192Confidentiality.Key = ConfKey;
            AES192Confidentiality.Mode = CipherMode.CBC;
            FileStream inputFileStream = new FileStream(par.GetFilePath(), FileMode.Open, FileAccess.Read);
            FileStream outputFileStream = new FileStream(outputFile, FileMode.Create, FileAccess.Write);
            byte[] inputFileData = new byte[(int)inputFileStream.Length];
            inputFileStream.Read(inputFileData, 0, (int)inputFileStream.Length);
            CryptoStream encryptStream = new CryptoStream(outputFileStream, AES192Confidentiality.CreateEncryptor(), CryptoStreamMode.Write);
            encryptStream.Write(inputFileData, 0, (int)inputFileStream.Length);
            encryptStream.FlushFinalBlock();
            encryptStream.Close();

この暗号化された一時ファイルをソケット経由で送信して、受信者がファイルを再構築して復号化できるようにする方法を考えています。誰かが私にチュートリアルやガイドを教えてくれますか? よろしくお願いします

4

2 に答える 2

1

ソケットのNetworkStreamのインスタンスを作成してから呼び出すことができますencryptStream.CopyTo(myNetworkStream);

于 2013-05-18T14:31:52.373 に答える
1

TcpClientを使用してサーバーに接続し、データを送信することを検討してください。これは学校の課題であると示したので、完全な回答を書くつもりはありませんが、例がどのようにデータを書き込むかを見てください:

// Get a client stream for reading and writing. 
NetworkStream networkStream = client.GetStream();

// Send the message to the connected TcpServer. 
networkStream.Write(data, 0, data.Length);

CopyToを使用して暗号ストリームからネットワーク ストリームにデータを直接書き込むために、少し調整することは避けたい場合があります。

これは、安全な鍵交換の問題を解決する必要がないことを前提としています。

于 2013-05-18T14:32:39.653 に答える