2016-11-23 40 views
-9
string cipherData; 
byte[] cipherbytes; 
byte[] plainbytes; 
byte[] plainbytes2; 
byte[] plainkey; 

SymmetricAlgorithm desObj; 
private void button1_Click(object sender, EventArgs e) 
{ 
    cipherData = textBox_Plain_text.Text; 
    plainbytes = Encoding.ASCII.GetBytes(cipherData); 
    plainkey = Encoding.ASCII.GetBytes("123456789abcdef"); 
    desObj.Key = plainkey; 
    // choose other appropriate modes (CBC, CFB, CTS, ECB, OFB) 
    desObj.Mode = CipherMode.CBC; 
    desObj.Padding = PaddingMode.PKCS7; 
    System.IO.MemoryStream ms = new System.IO.MemoryStream(); 
    CryptoStream cs = new CryptoStream(ms, desObj.CreateEncryptor(), new CryptoStreamMode()); 
    cs.Write(plainbytes, 0, plainbytes.Length); 
    cs.Close; 
    cipherbytes = ms.ToArray(); 
    ms.Close; 
    textBox_Encrypted_text.Text = Encoding.ASCII.GetString(cipherbytes); 
} 

error :Only assignment, call, increment, decrement, and new object expressions can be used as a statement.コンパイルエラー:のみ割り当て、呼び出し、インクリメント、デクリメント、および新しいオブジェクト式がステートメントとして使用することができます

+5

そして正確に誤りがありますか?エラーがどこにあるのかを明示する[mcve]を入力してください。 –

+4

'.Close'の後に角括弧がないようです。それはメソッド呼び出しなので '.Close()'でなければなりません。 –

+0

あなたはいくつかのディスポーザブルを放置しておきます。 Encoding.UTF8は.ASCIIよりも優れた選択です –

答えて

2

Only assignment, call, increment, decrement, and new object expressions can be used as a statement.

ドキュメントがstatementに言う:

The actions that a program takes are expressed in statements. Common actions include declaring variables, assigning values, calling methods, looping through collections, and branching to one or another block of code, depending on a given condition

あなたの基本的な問題は、これらの行でメソッドを呼び出すことをコンパイラに指示する()カッコがないことです。

cs.Close; 
ms.Close; 

そうにそれらを変更します。

cs.Close(); 
ms.Close(); 

それ以外のコンパイラを使用すると、フィールドまたはプロパティにアクセスしようと考えて、これは声明として単独で立つことができないことを示しています。エラーメッセージとして、あなたはどちらかを行うことができます状態:

assignment,

int c = ms.Capacity; 

call

ms.Close(); 

increment, decrement

ms.Capacity++; 

new object expressions

new MemoryStream(); 
関連する問題

 関連する問題