Dela via


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.

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.

Se även