创建SymmetricAlgorithm密钥C#时密钥保持为空

时间:2014-05-20 17:55:48

标签: c# serialization encryption

我使用以下方法加密和序列化对象

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 有人能告诉我如何创建这个密钥吗?

2 个答案:

答案 0 :(得分:1)

Create方法不接受密钥作为输入。输入是要创建的算法的名称。您可以像SymmetricAlgorithm.Create("AES")new AesCryptoServiceProvider()一样使用它。

要设置密钥,您将分配算法实例的Key属性。您可以使用GenerateKey()生成随机密钥,也可以使用PBKDF2之类的方法派生密钥。

答案 1 :(得分:0)

SymmetricAlgorithm.Create(String algName)方法不接受密钥,它需要算法名称。要创建AES算法和新密钥,您可以construct an Aes classGenerateKey()之后调用setting the key size

如果已创建密钥,您可以使用Key属性设置它。