SYSLIB0007: Domyślne implementacje algorytmów kryptograficznych nie są obsługiwane
System konfiguracji kryptograficznych w programie .NET Framework nie zezwala na odpowiednią elastyczność kryptograficzną i nie jest obecny w programach .NET Core i .NET 5+. . Wymagania dotyczące zgodności z poprzednimi wersjami platformy również uniemożliwiają aktualizację niektórych interfejsów API kryptograficznych, aby nadążyć za postępami kryptografii. W związku z tym następujące interfejsy API są oznaczone jako przestarzałe, począwszy od platformy .NET 5. Użycie tych interfejsów API generuje ostrzeżenie SYSLIB0007
w czasie kompilacji i PlatformNotSupportedException w czasie wykonywania.
- System.Security.Cryptography.AsymmetricAlgorithm.Create()
- System.Security.Cryptography.HashAlgorithm.Create()
- System.Security.Cryptography.HMAC.Create()
- System.Security.Cryptography.KeyedHashAlgorithm.Create()
- System.Security.Cryptography.SymmetricAlgorithm.Create()
Obejścia
Zalecanym przebiegiem akcji jest zastąpienie wywołań do przestarzałych interfejsów API wywołaniami metod fabrycznych dla określonych algorytmów, na przykład Aes.Create(). Zapewnia to pełną kontrolę nad tym, które algorytmy są tworzone.
Jeśli musisz zachować zgodność z istniejącymi ładunkami wygenerowanymi przez aplikacje programu .NET Framework, które korzystają z przestarzałych interfejsów API, użyj zamian sugerowanych w poniższej tabeli. Tabela zawiera mapowanie z domyślnych algorytmów programu .NET Framework na odpowiedniki platformy .NET 5+.
.NET Framework Wymiana zgodna z platformą .NET Core/.NET 5+ Uwagi AsymmetricAlgorithm.Create() RSA.Create() HashAlgorithm.Create() SHA1.Create() Algorytm SHA-1 jest uznawany za uszkodzony. Rozważ użycie silniejszego algorytmu, jeśli jest to możliwe. Aby uzyskać więcej wskazówek, zapoznaj się z doradcą ds. zabezpieczeń. HMAC.Create() HMACSHA1() Algorytm HMACSHA1 jest odradzany w przypadku większości nowoczesnych aplikacji. Rozważ użycie silniejszego algorytmu, jeśli jest to możliwe. Aby uzyskać więcej wskazówek, zapoznaj się z doradcą ds. zabezpieczeń. KeyedHashAlgorithm.Create() HMACSHA1() Algorytm HMACSHA1 jest odradzany w przypadku większości nowoczesnych aplikacji. Rozważ użycie silniejszego algorytmu, jeśli jest to możliwe. Aby uzyskać więcej wskazówek, zapoznaj się z doradcą ds. zabezpieczeń. SymmetricAlgorithm.Create() Aes.Create()
Pomijanie ostrzeżenia
Jeśli musisz używać przestarzałych interfejsów API, możesz pominąć ostrzeżenie w kodzie lub w pliku projektu.
Aby pominąć tylko jedno naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć ostrzeżenie.
// Disable the warning.
#pragma warning disable SYSLIB0007
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0007
Aby pominąć wszystkie SYSLIB0007
ostrzeżenia w projekcie, dodaj <NoWarn>
właściwość do pliku projektu.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0007</NoWarn>
</PropertyGroup>
</Project>
Aby uzyskać więcej informacji, zobacz Pomijanie ostrzeżeń.