2016-09-13 105 views
0

使用ECC描述 我有一個關於此文件的描述的問題,有人能幫助我嗎?我我使用ECC在這裏輸入的形象描述System.Core.dll中發生類型'System.Security.Cryptography.CryptographicException'的第一次機會異常

代碼是在這裏:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.IO; 
using System.Security.Cryptography; 



namespace eccdh_Forme.ECC 
{ 
    public class ECCDH 
    { 


     public static byte[] Enkripto(byte[] key, string MesazhiSekret) 
     { 

      AesCryptoServiceProvider aes = new AesCryptoServiceProvider(); 
      key=aes.Key; 
      byte[] iv = aes.IV; 
      aes.BlockSize = 128; 
      aes.Mode = CipherMode.ECB; 
      aes.Padding = PaddingMode.PKCS7; 


      // Encrypt the message 
      using (MemoryStream ciphertext = new MemoryStream()) 
      using (CryptoStream cs = new CryptoStream(ciphertext, aes.CreateEncryptor(), CryptoStreamMode.Write)) 
      { 
       byte[] plaintextMessage = Encoding.UTF8.GetBytes(MesazhiSekret); 
       cs.Write(plaintextMessage, 0, plaintextMessage.Length); 
       cs.Close(); 
       byte[] cipherMesazhi = ciphertext.ToArray(); 
       return cipherMesazhi; 
      } 



     } 
     public static byte[] Dekripto(byte[] encryptedMessage, byte[] bobKey)//e shtuar e re mja pasu vleren 
     { 
      AesCryptoServiceProvider aes = new AesCryptoServiceProvider(); 
      byte[] message; 
      bobKey=aes.Key; 
      byte[] iv = aes.IV; 

       // Decrypt the message 
      using (MemoryStream plaintext = new MemoryStream()) 
       { 
        using (CryptoStream cs = new CryptoStream(plaintext, aes.CreateDecryptor(), CryptoStreamMode.Write)) 
        { 
         cs.Write(encryptedMessage, 0, encryptedMessage.Length); 
         cs.Close();      
         message = plaintext.ToArray();      


        } 
       } 

       return message; 
     } 
    } 
} 

該計劃回採編譯文我嘗試decript在這行代碼文本「cs.Close ();「。 形式能解密是這樣的: enter image description here

+1

你需要的一切都是例外。然而,你拒絕複製例外的全部內容並將其粘貼到[edit]中。你爲什麼恨我們? – Will

+0

我可以向您發送完整的項目並查看問題嗎?在這個項目中,C#中的新功能是用於教育的。你能幫我嗎?如果是的話,我可以在Dropbox上保存,並在此處鏈接 –

回答

0

有一些問題在這裏,但一個最有可能導致您的例外是你向後分配的關鍵。這個:

AesCryptoServiceProvider aes = new AesCryptoServiceProvider(); 
byte[] message; 
bobKey=aes.Key; 
byte[] iv = aes.IV; 

你正在設置你的參數值爲一個隨機的AES密鑰。你可能打算這樣做:

aes.Key = bobKey; 

其他的事情:

  1. 你似乎在試圖用一個初始化向量。我不確定你爲什麼捕獲它,但在ECB模式下沒有初始化向量。
  2. 我打算假設這是一個學習練習,以瞭解加密和密鑰交換如何工作。那很棒!快樂的學習,但請記住這裏有一些安全問題。主要的一點是你使用ECB,而不是MAC。在您將這些內容放入生產系統之前,如果是這樣的意圖,我會考慮採用更高層次的方法,因此密鑰交換對您而言是透明的。
+0

我可以向您發送完整的項目並查看問題嗎?在這個項目中C#中新增了 是爲了教育。你能幫我嗎? 當是的,我可以upbox上保管箱,並在此處鏈接 –

+1

Whoda看到了即將??? – Will

相關問題