SYSLIB0007: Standardimplementeringar av kryptografialgoritmer stöds inte
Det kryptografiska konfigurationssystemet i .NET Framework tillåter inte korrekt kryptografisk flexibilitet och finns inte i .NET Core och .NET 5+. . NET:s krav på bakåtkompatibilitet förbjuder också ramverket från att uppdatera vissa kryptografiska API:er för att hålla jämna steg med framstegen inom kryptografi. Därför markeras följande API:er som föråldrade, med början i .NET 5. Användning av dessa API:er genererar varning SYSLIB0007
vid kompileringstid och vid PlatformNotSupportedException körning.
- 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()
Provisoriska lösningar
Den rekommenderade åtgärden är att ersätta anrop till nu föråldrade API:er med anrop till fabriksmetoder för specifika algoritmer, Aes.Create()till exempel . Detta ger dig fullständig kontroll över vilka algoritmer som instansieras.
Om du behöver upprätthålla kompatibiliteten med befintliga nyttolaster som genereras av .NET Framework-appar som använder de nu föråldrade API:erna använder du de ersättningar som föreslås i följande tabell. Tabellen innehåller en mappning från .NET Framework-standardalgoritmer till deras .NET 5+-motsvarigheter.
.NET Framework .NET Core/.NET 5+ kompatibel ersättning Kommentarer AsymmetricAlgorithm.Create() RSA.Create() HashAlgorithm.Create() SHA1.Create() SHA-1-algoritmen anses vara bruten. Överväg att använda en starkare algoritm om det är möjligt. Kontakta din säkerhetsrådgivare för ytterligare vägledning. HMAC.Create() HMACSHA1() Algoritmen HMACSHA1 rekommenderas inte för de flesta moderna program. Överväg att använda en starkare algoritm om det är möjligt. Kontakta din säkerhetsrådgivare för ytterligare vägledning. KeyedHashAlgorithm.Create() HMACSHA1() Algoritmen HMACSHA1 rekommenderas inte för de flesta moderna program. Överväg att använda en starkare algoritm om det är möjligt. Kontakta din säkerhetsrådgivare för ytterligare vägledning. SymmetricAlgorithm.Create() Aes.Create()
Ignorera en varning
Om du måste använda föråldrade API:er kan du ignorera varningen i koden eller i projektfilen.
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och återaktiverar sedan varningen.
// Disable the warning.
#pragma warning disable SYSLIB0007
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0007
Om du vill ignorera alla SYSLIB0007
varningar i projektet lägger du till en <NoWarn>
egenskap i projektfilen.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0007</NoWarn>
</PropertyGroup>
</Project>
Mer information finns i Utelämna varningar.