Delen via


SYSLIB0007: standaard implementaties van cryptografiealgoritmen worden niet ondersteund

Het cryptografische configuratiesysteem in .NET Framework biedt geen juiste cryptografische flexibiliteit en is niet aanwezig in .NET Core en .NET 5+. . De vereisten voor achterwaartse compatibiliteit van NET verbieden ook dat het framework bepaalde cryptografische API's bijwerkt om bij te blijven met de ontwikkelingen in cryptografie. Als gevolg hiervan worden de volgende API's gemarkeerd als verouderd, te beginnen in .NET 5. Het gebruik van deze API's genereert een waarschuwing SYSLIB0007 tijdens het compileren en een PlatformNotSupportedException tijdens runtime.

Tijdelijke oplossingen

  • De aanbevolen procedure is het vervangen van aanroepen naar de nu verouderde API's door aanroepen naar factory-methoden voor specifieke algoritmen, bijvoorbeeld Aes.Create(). Dit geeft u volledige controle over welke algoritmen worden geïnstantieerd.

  • Als u compatibiliteit wilt behouden met bestaande nettoladingen die worden gegenereerd door .NET Framework-apps die gebruikmaken van de nu verouderde API's, gebruikt u de vervangingen die in de volgende tabel worden voorgesteld. De tabel biedt een toewijzing van standaardalgoritmen van .NET Framework aan hun .NET 5+ equivalenten.

    .NET Framework .NET Core / .NET 5+ compatibele vervanging Opmerkingen
    AsymmetricAlgorithm.Create() RSA.Create()
    HashAlgorithm.Create() SHA1.Create() Het SHA-1-algoritme wordt beschouwd als verbroken. Overweeg indien mogelijk een sterker algoritme te gebruiken. Neem contact op met uw beveiligingsadviseur voor verdere begeleiding.
    HMAC.Create() HMACSHA1() Het HMACSHA1 algoritme wordt afgeraden voor de meeste moderne toepassingen. Overweeg indien mogelijk een sterker algoritme te gebruiken. Neem contact op met uw beveiligingsadviseur voor verdere begeleiding.
    KeyedHashAlgorithm.Create() HMACSHA1() Het HMACSHA1 algoritme wordt afgeraden voor de meeste moderne toepassingen. Overweeg indien mogelijk een sterker algoritme te gebruiken. Neem contact op met uw beveiligingsadviseur voor verdere begeleiding.
    SymmetricAlgorithm.Create() Aes.Create()

Een waarschuwing onderdrukken

Als u de verouderde API's moet gebruiken, kunt u de waarschuwing in code of in het projectbestand onderdrukken.

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de waarschuwing uit te schakelen en vervolgens opnieuw in te schakelen.

// Disable the warning.
#pragma warning disable SYSLIB0007

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

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

Als u alle SYSLIB0007 waarschuwingen in uw project wilt onderdrukken, voegt u een <NoWarn> eigenschap toe aan het projectbestand.

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

Zie Waarschuwingen onderdrukken voor meer informatie.

Zie ook