在启用ASP.NET Core数据保护中间件时,需要为数据保护提供一个加密算法。如果未指定加密算法,则会出现“Symmetric algorithm is not specified”错误。
以下是指定对称算法的示例代码:
在Startup.cs文件中的ConfigureServices方法中,添加以下代码:
services.AddDataProtection() .UseCryptographicAlgorithms(new AuthenticatedEncryptorConfiguration() { EncryptionAlgorithm = EncryptionAlgorithm.AES_256_GCM, ValidationAlgorithm = ValidationAlgorithm.HMACSHA256 });
上述代码使用AES_256_GCM算法进行加密,并使用HMACSHA256算法进行验证。您还可以根据自己的需求选择其他加密算法。
若要使用自己的秘钥而不是自动生成的秘钥,可以采用如下方式:
services.AddDataProtection() .PersistKeysToFileSystem(new DirectoryInfo(@"c:\temp-keys")) .SetDefaultKeyLifetime(TimeSpan.FromDays(14)) .ProtectKeysWithDpapi() .UseCryptographicAlgorithms(new AuthenticatedEncryptorConfiguration() { EncryptionAlgorithm = EncryptionAlgorithm.AES_256_GCM, ValidationAlgorithm = ValidationAlgorithm.HMACSHA256 }) .SetApplicationName("MyAppName");
这将使ASP.NET Core数据保护使用AES_256_GCM算法进行加密并将密钥存储在本地磁盘上。你也可以用ProtectKeysWithDpapi()方法保护已加密的密钥。您可以根据需求设置密钥的生存期,并用SetApplicationName()方法指定应用程序名称。