Dela via


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.

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.