SYSLIB0053: AesGcm harus menunjukkan ukuran tag yang diperlukan
AesGcm Konstruktor yang tidak menerima ukuran tag sudah usang, mulai dari .NET 8:
Memanggilnya dalam kode menghasilkan peringatan SYSLIB0053
pada waktu kompilasi.
Alasan kedaluarsa
AES-GCM mendukung tag dengan berbagai panjang, dari 12 hingga 16 byte, tergantung pada platform. Sebelumnya, AesGcm kelas akan menentukan ukuran tag yang diinginkan berdasarkan ukuran tag itu sendiri. Misalnya, jika Decrypt dipanggil dengan tag 14 byte, diasumsikan tag seharusnya 14 byte.
Namun, AES-GCM mendukung berbagai panjang ini dengan pemotongan. AES-GCM secara asli menghasilkan 16 tag byte, dan tag yang lebih pendek diproduksi dengan memotong tag.
Jika penelepon Decrypt()
mendapatkan tag dari input dan meneruskan tag apa adanya, itu secara efektif memungkinkan Decrypt()
untuk digunakan dengan tag sesingkat mungkin, yang mengurangi ukuran tag yang efektif.
Untuk membantu konsumen memastikan mereka menggunakan tag dengan ukuran yang benar, konstruktor baru untuk AesGcm diperkenalkan yang memerlukan pendeklarasikan ukuran tag yang diharapkan di muka. Selama Encrypt()
atau Decrypt()
, parameter tag yang disediakan harus sesuai dengan ukuran yang dideklarasikan dalam konstruktor.
Solusi Sementara
Konstruktor baru yang menerima ukuran tag telah ditambahkan di .NET 8. Gunakan salah satu konstruktor ini sebagai gantinya:
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 SYSLIB0053
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0053
Untuk menekan semua SYSLIB0053
peringatan dalam proyek Anda, tambahkan <NoWarn>
properti ke file proyek Anda.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0053</NoWarn>
</PropertyGroup>
</Project>
Untuk informasi selengkapnya, lihat Menyembunyikan peringatan.