2016-09-13 107 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

相关问题