2014-05-20 20 views
0

當我使用下面的方法來加密和序列化對象主要停留空創建SymmetricAlgorithm鍵C#

public static void EncryptAndSerialize(string filename,User pObject, string pStrKey) 
    { 
     SymmetricAlgorithm key = SymmetricAlgorithm.Create(pStrKey); 

     using (FileStream fs = File.Open(filename, FileMode.Create)) 
     { 
      using (CryptoStream cs = new CryptoStream(fs, key.CreateEncryptor(), CryptoStreamMode.Write)) 
      { 
       XmlSerializer xmlser = new XmlSerializer(typeof(User)); 
       xmlser.Serialize(cs, pObject); 
      } 
     } 
    } 

但是當我使用SymmetricAlgorithm key = SymmetricAlgorithm.Create(pStrKey);我的鑰匙仍然null 有人能告訴我如何創建此關鍵?

+0

這取決於您的密鑰管理。您可以簡單地創建一個新密鑰並存儲該密鑰,但通常情況下,您將爲該方法重新使用該密鑰。請注意,您的方法應該被稱爲'SerializeAndEncrypt',而不是相反。 –

回答

1

Create方法不接受密鑰作爲輸入。輸入是要創建的算法的名稱。您可以使用它,如SymmetricAlgorithm.Create("AES")或簡單地new AesCryptoServiceProvider()

要設置密鑰,您需要指定算法實例的Key屬性。您可以使用GenerateKey()生成隨機密鑰,也可以使用類似PBKDF2的密鑰來派生密鑰。

+0

不要忘記首先設置密鑰大小:) –