SYSLIB0007: A titkosítási algoritmusok alapértelmezett implementációi nem támogatottak

A .NET-keretrendszer titkosítási konfigurációs rendszere nem teszi lehetővé a megfelelő titkosítási rugalmasságot, és nem található meg a .NET Core-ban és a .NET 5+-ban. . A NET visszamenőleges kompatibilitási követelményei azt is tiltják, hogy a keretrendszer bizonyos titkosítási API-kat frissítsen, hogy lépést tartson a kriptográfiai fejlődéssel. Ennek eredményeképpen a következő API-k elavultnak minősülnek, kezdve a .NET 5-tel. Ezeknek az API-knak a használata figyelmeztetést SYSLIB0007 generál fordításkor és PlatformNotSupportedException futásidőben.

Áthidaló megoldások

  • A javasolt művelet a már elavult API-k hívásainak lecserélése adott algoritmusok gyári metódusainak hívására, Aes.Create()például. Így teljes mértékben szabályozhatja, hogy mely algoritmusok legyenek példányosítva.

  • Ha meg kell őriznie a kompatibilitást a már elavult API-kat használó .NET-keretrendszer-alkalmazások által létrehozott meglévő payloadokkal, használja az alábbi táblázatban javasolt helyettesítőket. A táblázat a .NET-keretrendszer alapértelmezett algoritmusai és a .NET 5+ megfelelői közötti leképezést biztosítja.

    .NET-keretrendszer .NET Core/.NET 5+ kompatibilis alternatíva Megjegyzések
    AsymmetricAlgorithm.Create() RSA.Create()
    HashAlgorithm.Create() SHA1.Create() Az SHA-1 algoritmus hibásnak minősül. Ha lehetséges, fontolja meg egy erősebb algoritmus használatát. További útmutatásért forduljon a biztonsági tanácsadójához.
    HMAC.Create() HMACSHA1() A HMACSHA1 algoritmust a legtöbb modern alkalmazás nem használja. Ha lehetséges, fontolja meg egy erősebb algoritmus használatát. További útmutatásért forduljon a biztonsági tanácsadójához.
    KeyedHashAlgorithm.Create() HMACSHA1() A HMACSHA1 algoritmust a legtöbb modern alkalmazás nem használja. Ha lehetséges, fontolja meg egy erősebb algoritmus használatát. További útmutatásért forduljon a biztonsági tanácsadójához.
    SymmetricAlgorithm.Create() Aes.Create()

Figyelmeztetés mellőzése

Ha az elavult API-kat kell használnia, letilthatja a figyelmeztetést a kódban vagy a projektfájlban.

Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz, hogy letiltsa, majd engedélyezze újra a figyelmeztetést.

// Disable the warning.
#pragma warning disable SYSLIB0007

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

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

Ha el szeretné tiltani a projekt összes SYSLIB0007 figyelmeztetését, adjon hozzá egy <NoWarn> tulajdonságot a projektfájlhoz.

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

További információ: Figyelmeztetések letiltása.

Lásd még