SYSLIB0041: Sommige Rfc2898DeriveBytes-constructors zijn verouderd
De volgende Rfc2898DeriveBytes constructors zijn verouderd, te beginnen in .NET 7. Als u ze in code gebruikt, wordt er een waarschuwing SYSLIB0041
gegenereerd tijdens het compileren.
- Rfc2898DeriveBytes(String, Byte[])
- Rfc2898DeriveBytes(String, Int32)
- Rfc2898DeriveBytes(Byte[], Byte[], Int32)
- Rfc2898DeriveBytes(String, Byte[], Int32)
- Rfc2898DeriveBytes(String, Int32, Int32)
Deze overbelastingen standaard het hash-algoritme of het aantal iteraties, en de standaardwaarden worden niet langer als veilig beschouwd. Dit zijn alle constructors die beschikbaar waren in .NET 4.7.1 en eerdere versies. In de toekomst moet u alleen de nieuwere constructors gebruiken.
Tijdelijke oplossing
Gebruik een andere overbelasting van de constructor waar u expliciet het iteratieaantal (de standaardwaarde is 1000) en de naam van het hash-algoritme (de standaardwaarde is HashAlgorithmName.SHA1).
Als u het standaardaantal iteraties of het standaardhash-algoritme gebruikt, kunt u overwegen om over te stappen op veiligere waarden, dat wil gezegd een groter aantal iteraties of een nieuwer hash-algoritme.
Een waarschuwing onderdrukken
Als u de verouderde API's 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 SYSLIB0041
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0041
Als u alle SYSLIB0041
waarschuwingen in uw project wilt onderdrukken, voegt u een <NoWarn>
eigenschap toe aan het projectbestand.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0041</NoWarn>
</PropertyGroup>
</Project>
Zie Waarschuwingen onderdrukken voor meer informatie.