我使用以下方法加密和序列化对象
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 :(得分:1)
Create
方法不接受密钥作为输入。输入是要创建的算法的名称。您可以像SymmetricAlgorithm.Create("AES")
或new AesCryptoServiceProvider()
一样使用它。
要设置密钥,您将分配算法实例的Key
属性。您可以使用GenerateKey()
生成随机密钥,也可以使用PBKDF2之类的方法派生密钥。
答案 1 :(得分:0)
SymmetricAlgorithm.Create(String algName)
方法不接受密钥,它需要算法名称。要创建AES算法和新密钥,您可以construct an Aes
class在GenerateKey()
之后调用setting the key size。
如果已创建密钥,您可以使用Key
属性设置它。