Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Počínaje rozhraním .NET 10 jsou všechny konstruktory na System.Security.Cryptography.Rfc2898DeriveBytes zastaralé. Volání těchto konstruktorů v kódu generuje upozornění SYSLIB0060
v době kompilace.
Důvod zastaralosti
Implementace PBKDF2 založená na instancích, kterou poskytuje System.Security.Cryptography.Rfc2898DeriveBytes, nabízí nestandardní využití tím, že "streamuje" bajty zpět a umožňuje postupná volání GetBytes
. Nejedná se o zamýšlené použití PBKDF2; algoritmus by se měl použít jako jednorázová akce. Jednorázová funkce existuje jako statická metoda Rfc2898DeriveBytes.Pbkdf2 a měla by se použít místo instancování System.Security.Cryptography.Rfc2898DeriveBytes.
Alternativní řešení
Změňte instance System.Security.Cryptography.Rfc2898DeriveBytes a volání GetBytes
tak, aby místo toho používaly Rfc2898DeriveBytes.Pbkdf2 statickou metodu pro jednorázové použití.
Můžete například změnit:
using System.Security.Cryptography;
Rfc2898DeriveBytes kdf = new Rfc2898DeriveBytes(password, salt, iterations, hashAlgorithm);
byte[] derivedKey = kdf.GetBytes(64);
k
byte[] derivedKey = Rfc2898DeriveBytes.Pbkdf2(password, salt, iterations, hashAlgorithm, 64);
Potlačení upozornění
Pokud musíte použít zastaralé rozhraní API, můžete potlačit upozornění v kódu nebo v souboru projektu.
Chcete-li potlačit pouze jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, které chcete zakázat a znovu povolit upozornění.
// Disable the warning.
#pragma warning disable SYSLIB0060
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0060
Pokud chcete potlačit všechna upozornění SYSLIB0060
v projektu, přidejte do souboru projektu vlastnost <NoWarn>
.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0060</NoWarn>
</PropertyGroup>
</Project>
Další informace naleznete v tématu Potlačení upozornění.