SYSLIB0041: Beberapa konstruktor Rfc2898DeriveBytes sudah usang
Konstruktor berikut Rfc2898DeriveBytes usang, mulai dari .NET 7. Menggunakannya dalam kode menghasilkan peringatan SYSLIB0041
pada waktu kompilasi.
- Rfc2898DeriveBytes(String, Byte[])
- Rfc2898DeriveBytes(String, Int32)
- Rfc2898DeriveBytes(Byte[], Byte[], Int32)
- Rfc2898DeriveBytes(String, Byte[], Int32)
- Rfc2898DeriveBytes(String, Int32, Int32)
Ini membebani secara default algoritma hash atau jumlah iterasi, dan default tidak lagi dianggap aman. Ini adalah semua konstruktor yang tersedia di .NET 4.7.1 dan versi yang lebih lama. Ke depannya, Anda hanya boleh menggunakan konstruktor yang lebih baru.
Solusi Sementara
Gunakan overload konstruktor yang berbeda di mana Anda dapat secara eksplisit menentukan jumlah iterasi (defaultnya adalah 1000) dan nama algoritma hash (defaultnya adalah HashAlgorithmName.SHA1).
Jika Anda menggunakan jumlah iterasi default atau algoritma hash default, pertimbangkan untuk berpindah ke nilai yang lebih aman—yaitu, jumlah perulangan yang lebih besar atau algoritma hash yang lebih baru.
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 SYSLIB0041
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0041
Untuk menekan semua SYSLIB0041
peringatan dalam proyek Anda, tambahkan <NoWarn>
properti ke file proyek Anda.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0041</NoWarn>
</PropertyGroup>
</Project>
Untuk informasi selengkapnya, lihat Menyembunyikan peringatan.