SYSLIB0041: Vissa Rfc2898DeriveBytes-konstruktorer är föråldrade
Följande Rfc2898DeriveBytes konstruktorer är föråldrade, med början i .NET 7. Om du använder dem i kod genereras en varning SYSLIB0041
vid kompileringstillfället.
- Rfc2898DeriveBytes(String, Byte[])
- Rfc2898DeriveBytes(String, Int32)
- Rfc2898DeriveBytes(Byte[], Byte[], Int32)
- Rfc2898DeriveBytes(String, Byte[], Int32)
- Rfc2898DeriveBytes(String, Int32, Int32)
Dessa överlagringar är som standard hash-algoritmen eller antalet iterationer, och standardvärdena anses inte längre vara säkra. Dessa är alla konstruktorer som var tillgängliga i .NET 4.7.1 och tidigare versioner. Framöver bör du bara använda de nyare konstruktorerna.
Lösning
Använd en annan konstruktoröverlagring där du uttryckligen kan ange antalet iteration (standardvärdet är 1 000) och namnet på hashalgoritmen (standardvärdet är HashAlgorithmName.SHA1).
Om du använder standard iterationsantalet eller standard-hash-algoritmen kan du överväga att flytta till säkrare värden, dvs. ett större iterationsantal eller en nyare hashalgoritm.
Ignorera en varning
Om du måste använda föråldrade API:er kan du ignorera varningen i koden eller i projektfilen.
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och återaktiverar sedan varningen.
// Disable the warning.
#pragma warning disable SYSLIB0041
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0041
Om du vill ignorera alla SYSLIB0041
varningar i projektet lägger du till en <NoWarn>
egenskap i projektfilen.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0041</NoWarn>
</PropertyGroup>
</Project>
Mer information finns i Utelämna varningar.