Sdílet prostřednictvím


SYSLIB0007: Výchozí implementace kryptografických algoritmů se nepodporují.

Kryptografický konfigurační systém v rozhraní .NET Framework neumožňuje správnou kryptografickou flexibilitu a není k dispozici v .NET Core a .NET 5+. . Požadavky na zpětnou kompatibilitu rozhraní NET také zakazují aktualizaci určitých kryptografických rozhraní API, aby se zachovaly pokroky v kryptografii. V důsledku toho jsou následující rozhraní API označena zastaralá, počínaje verzí .NET 5. Použití těchto rozhraní API generuje upozornění SYSLIB0007 v době kompilace a PlatformNotSupportedException za běhu.

Alternativní řešení

  • Doporučeným samozřejmě je nahradit volání nyní zastaralá rozhraní API voláními metod továrny pro konkrétní algoritmy, Aes.Create()například . Tím získáte úplnou kontrolu nad tím, které algoritmy se vytvoří instance.

  • Pokud potřebujete zachovat kompatibilitu s existujícími datovými částmi vygenerovanými aplikacemi rozhraní .NET Framework, které používají nyní zastaralá rozhraní API, použijte náhrady navrhované v následující tabulce. Tabulka poskytuje mapování z výchozích algoritmů rozhraní .NET Framework na jejich ekvivalenty .NET 5 nebo novější.

    .NET Framework Náhrada kompatibilní s .NET Core / .NET 5+ Poznámky
    AsymmetricAlgorithm.Create() RSA.Create()
    HashAlgorithm.Create() SHA1.Create() Algoritmus SHA-1 se považuje za poškozený. Pokud je to možné, zvažte použití silnějšího algoritmu. Další pokyny najdete v poradci pro zabezpečení.
    HMAC.Create() HMACSHA1() U většiny moderních aplikací se nedoporučuje HMACSHA1 algoritmus. Pokud je to možné, zvažte použití silnějšího algoritmu. Další pokyny najdete v poradci pro zabezpečení.
    KeyedHashAlgorithm.Create() HMACSHA1() U většiny moderních aplikací se nedoporučuje HMACSHA1 algoritmus. Pokud je to možné, zvažte použití silnějšího algoritmu. Další pokyny najdete v poradci pro zabezpečení.
    SymmetricAlgorithm.Create() Aes.Create()

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 SYSLIB0007

// Code that uses obsolete API.
// ...

// Re-enable the warning.
#pragma warning restore SYSLIB0007

Pokud chcete potlačit všechna SYSLIB0007 upozornění v projektu, přidejte <NoWarn> do souboru projektu vlastnost.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   ...
   <NoWarn>$(NoWarn);SYSLIB0007</NoWarn>
  </PropertyGroup>
</Project>

Další informace naleznete v tématu Potlačení upozornění.

Viz také