在.NET Framework 4.6.2中,Microsoft added support for persisted-key symmetric encryption使用CNG密钥存储提供程序和AesCng算法.使用现有密钥的documentation for instantiating the AesCng class非常清楚-只需将密钥名称传递给构造函数即可.
但是,如何生成新的持久密钥以用于AES加密?我在发行说明或文档中找不到说明. C#甚至有可能吗?
解决方法:
尽管没有很好地记录下来,但事实证明这很容易做到.您只需使用CngKey.Create方法.困难在于没有用于AES加密的CngAlgorithm属性.这似乎是Microsoft .NET Framework团队的疏忽.但是,您可以按名称构造自己的CngAlgorithm:
public static string CreateKey(string name)
{
CngKey.Create(new CngAlgorithm("AES"), name);
}
另请参阅:Asymetric cryptography example in c#