SYSLIB0007: Implementasi default algoritma kriptografi tidak didukung
Sistem konfigurasi kriptografi di .NET Framework tidak memungkinkan kelincahan kriptografi yang tepat dan tidak ada di .NET Core dan .NET 5+. . Persyaratan kompatibilitas mundur NET juga melarang kerangka kerja memperbarui API kriptografi tertentu untuk mengikuti kemajuan dalam kriptografi. Akibatnya, API berikut ditandai usang, mulai dari .NET 5. Penggunaan API ini menghasilkan peringatan SYSLIB0007
pada waktu kompilasi dan PlatformNotSupportedException pada runtime.
- 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()
Penyelesaian masalah
Tindakan yang direkomendasikan adalah mengganti panggilan ke API yang sekarang usang dengan panggilan ke metode pabrik untuk algoritma tertentu, misalnya, Aes.Create(). Ini memberi Anda kontrol penuh atas algoritma mana yang diinstansiasi.
Jika Anda perlu mempertahankan kompatibilitas dengan payload yang ada yang dihasilkan oleh aplikasi .NET Framework yang menggunakan API yang sekarang usang, gunakan penggantian yang disarankan dalam tabel berikut. Tabel menyediakan pemetaan dari algoritma default .NET Framework ke setara .NET 5+.
.NET Framework Penggantian kompatibel .NET Core / .NET 5+ Keterangan AsymmetricAlgorithm.Create() RSA.Create() HashAlgorithm.Create() SHA1.Create() Algoritma SHA-1 dianggap rusak. Pertimbangkan untuk menggunakan algoritma yang lebih kuat jika memungkinkan. Konsultasikan dengan penasihat keamanan Anda untuk panduan lebih lanjut. HMAC.Create() HMACSHA1() Algoritma HMACSHA1 tidak disarankan untuk sebagian besar aplikasi modern. Pertimbangkan untuk menggunakan algoritma yang lebih kuat jika memungkinkan. Konsultasikan dengan penasihat keamanan Anda untuk panduan lebih lanjut. KeyedHashAlgorithm.Create() HMACSHA1() Algoritma HMACSHA1 tidak disarankan untuk sebagian besar aplikasi modern. Pertimbangkan untuk menggunakan algoritma yang lebih kuat jika memungkinkan. Konsultasikan dengan penasihat keamanan Anda untuk panduan lebih lanjut. SymmetricAlgorithm.Create() Aes.Create()
Menyembunyikan peringatan
Jika Anda harus menggunakan API usang, Anda dapat menekan peringatan dalam kode atau dalam file proyek Anda.
Untuk menekan hanya satu pelanggaran, tambahkan direktif praprosedur ke file sumber Anda untuk menonaktifkan lalu mengaktifkan kembali peringatan.
// Disable the warning.
#pragma warning disable SYSLIB0007
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0007
Untuk menekan semua SYSLIB0007
peringatan dalam proyek Anda, tambahkan <NoWarn>
properti ke file proyek Anda.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0007</NoWarn>
</PropertyGroup>
</Project>
Untuk informasi selengkapnya, lihat Menyembunyikan peringatan.