Udostępnij za pośrednictwem


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.

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ń.

Zobacz też