生成持久密钥的AES

在.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#

上一篇:C#-EnvelopedCms解密不适用于Azure Key Vault


下一篇:通过具有C#中各种密码强度和算法的SSL通过SSL连接到服务器