Delen via


SYSLIB0060: Rfc2898DeriveBytes-constructors zijn verouderd

Vanaf .NET 10 zijn alle constructors op System.Security.Cryptography.Rfc2898DeriveBytes verouderd. Als u deze constructors aanroept in code, wordt er een waarschuwing gegenereerd SYSLIB0060 tijdens het compileren.

Reden voor veroudering

De op exemplaar gebaseerde implementatie van PBKDF2, die System.Security.Cryptography.Rfc2898DeriveBytes biedt, biedt een niet-standaardgebruik door bytes terug te streamen door het toestaan van opeenvolgende aanroepen naar GetBytes. Dit is niet het beoogde gebruik van PBKDF2; het algoritme moet worden gebruikt als een eenmalige handeling. De one-shot functionaliteit bestaat als de statische methode Rfc2898DeriveBytes.Pbkdf2 en moet worden gebruikt in plaats van het instantiëren van System.Security.Cryptography.Rfc2898DeriveBytes.

Tijdelijke oplossing

Wijzig voorvallen van System.Security.Cryptography.Rfc2898DeriveBytes en aanroepen van GetBytes om in plaats daarvan de éénmalige statische methode Rfc2898DeriveBytes.Pbkdf2 te gebruiken.

Bijvoorbeeld:

using System.Security.Cryptography;

Rfc2898DeriveBytes kdf = new Rfc2898DeriveBytes(password, salt, iterations, hashAlgorithm);
byte[] derivedKey = kdf.GetBytes(64);

naar

byte[] derivedKey = Rfc2898DeriveBytes.Pbkdf2(password, salt, iterations, hashAlgorithm, 64);

Een waarschuwing onderdrukken

Als u de verouderde API moet gebruiken, kunt u de waarschuwing in code of in het projectbestand onderdrukken.

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de waarschuwing uit te schakelen en vervolgens opnieuw in te schakelen.

// Disable the warning.
#pragma warning disable SYSLIB0060

// Code that uses obsolete API.
// ...

// Re-enable the warning.
#pragma warning restore SYSLIB0060

Als u alle SYSLIB0060 waarschuwingen in uw project wilt onderdrukken, voegt u een <NoWarn> eigenschap toe aan het projectbestand.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   ...
   <NoWarn>$(NoWarn);SYSLIB0060</NoWarn>
  </PropertyGroup>
</Project>

Zie Waarschuwingen onderdrukkenvoor meer informatie.