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.
- 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()
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í.