SYSLIB0060: Rfc2898DeriveBytes-Konstruktoren sind veraltet
Ab .NET 10 sind alle Konstruktoren für System.Security.Cryptography.Rfc2898DeriveBytes veraltet. Das Aufrufen dieser Konstruktoren im Code erzeugt Warnung SYSLIB0060
während der Kompilierung.
Grund für das Auslaufen
Die instanzbasierte Implementierung von PBKDF2, die System.Security.Cryptography.Rfc2898DeriveBytes bereitstellt, bietet eine nicht standardmäßige Nutzung, indem Bytes „zurückgestreamt“ werden, indem aufeinanderfolgende Aufrufe an GetBytes
zugelassen werden. Dies ist nicht die beabsichtigte Verwendung von PBKDF2; der Algorithmus sollte als einmaliger Vorgang verwendet werden. Die Einmalfunktion ist als statische Methode Rfc2898DeriveBytes.Pbkdf2 vorhanden und sollte anstelle der Instanziierung von System.Security.Cryptography.Rfc2898DeriveBytes verwendet werden.
Problemumgehung
Ändern Sie die Instanzen von System.Security.Cryptography.Rfc2898DeriveBytes und die Aufrufe von GetBytes
, um stattdessen die einmalige statische Methode Rfc2898DeriveBytes.Pbkdf2 zu verwenden.
Ändern Sie z. B. Folgendes:
using System.Security.Cryptography;
Rfc2898DeriveBytes kdf = new Rfc2898DeriveBytes(password, salt, iterations, hashAlgorithm);
byte[] derivedKey = kdf.GetBytes(64);
Bis
byte[] derivedKey = Rfc2898DeriveBytes.Pbkdf2(password, salt, iterations, hashAlgorithm, 64);
Unterdrücken einer Warnung
Wenn Sie die veraltete API verwenden müssen, können Sie die Warnung im Code oder in der Projektdatei unterdrücken.
Um nur einen einzelnen Verstoß zu unterdrücken, fügen Sie Ihrer Quelldatei Präprozessordirektiven hinzu, um die Warnung zu deaktivieren und dann erneut zu aktivieren.
// Disable the warning.
#pragma warning disable SYSLIB0060
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0060
Um alle SYSLIB0060
Warnungen in Ihrem Projekt zu unterdrücken, fügen Sie Ihrer Projektdatei eine <NoWarn>
Eigenschaft hinzu.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0060</NoWarn>
</PropertyGroup>
</Project>
Weitere Informationen finden Sie unter Unterdrücken von Warnungen.