Aracılığıyla paylaş


SYSLIB0007: Şifreleme algoritmalarının varsayılan uygulamaları desteklenmez

.NET Framework'teki şifreleme yapılandırma sistemi düzgün şifreleme çevikliği sağlamaz ve .NET Core ve .NET 5+'ta mevcut değildir. . NET'in geriye dönük uyumluluk gereksinimleri, çerçevenin şifrelemedeki ilerlemelere ayak uydurmak için belirli şifreleme API'lerini güncelleştirmesini de yasaklar. Sonuç olarak, aşağıdaki API'ler .NET 5'te başlayarak eski olarak işaretlenir. Bu API'lerin kullanılması derleme zamanında SYSLIB0007 uyarı ve çalışma zamanında PlatformNotSupportedException oluşturur.

Geçici Çözümler

  • Önerilen eylem, artık kullanılmayan API'lere yapılan çağrıları, örneğin Aes.Create()belirli algoritmalar için fabrika yöntemlerine yapılan çağrılarla değiştirmektir. Bu, hangi algoritmaların oluşturulduğu üzerinde tamamen kontrol sağlar.

  • Artık kullanılmayan API'leri kullanan .NET Framework uygulamaları tarafından oluşturulan mevcut yüklerle uyumluluğu sürdürmeniz gerekiyorsa, aşağıdaki tabloda önerilen değişiklikleri kullanın. Tablo, .NET Framework varsayılan algoritmalarından .NET 5+ eşdeğerlerine eşleme sağlar.

    .NET Çerçevesi .NET Core / .NET 5+ uyumlu yedek Açıklamalar
    AsymmetricAlgorithm.Create() RSA.Create()
    HashAlgorithm.Create() SHA1.Create() SHA-1 algoritması bozuk olarak kabul edilir. Mümkünse daha güçlü bir algoritma kullanmayı göz önünde bulundurun. Daha fazla rehberlik için güvenlik danışmanınıza başvurun.
    HMAC.Create() HMACSHA1() çoğu modern uygulama için HMACSHA1 algoritması önerilmez. Mümkünse daha güçlü bir algoritma kullanmayı göz önünde bulundurun. Daha fazla rehberlik için güvenlik danışmanınıza başvurun.
    KeyedHashAlgorithm.Create() HMACSHA1() çoğu modern uygulama için HMACSHA1 algoritması önerilmez. Mümkünse daha güçlü bir algoritma kullanmayı göz önünde bulundurun. Daha fazla rehberlik için güvenlik danışmanınıza başvurun.
    SymmetricAlgorithm.Create() Aes.Create()

Uyarıyı gizleme

Eski API'leri kullanmanız gerekiyorsa, uyarıyı kodda veya proje dosyanızda gizleyebilirsiniz.

Yalnızca tek bir ihlali engellemek için, önişlemci yönergelerini kaynak dosyanıza ekleyerek uyarıyı devre dışı bırakın ve sonra yeniden etkinleştirin.

// Disable the warning.
#pragma warning disable SYSLIB0007

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

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

Projenizdeki tüm SYSLIB0007 uyarılarını engellemek için proje dosyanıza bir <NoWarn> özelliği ekleyin.

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

Daha fazla bilgi için bkz. uyarıları gizleme.

Ayrıca bakınız