Rumah > pembangunan bahagian belakang > C++ > Mengapa Penyahsulitan Rentetan Saya Diputuskan Selepas Menaik taraf daripada .NET 5 kepada .NET 6?

Mengapa Penyahsulitan Rentetan Saya Diputuskan Selepas Menaik taraf daripada .NET 5 kepada .NET 6?

DDD
Lepaskan: 2025-01-04 07:52:34
asal
319 orang telah melayarinya

Why is My String Decryption Cut Off After Upgrading from .NET 5 to .NET 6?

Nyahsulit Isu Semasa Menaik taraf ke .NET 6: Kelas Penyulitan Rentetan

Dalam projek .NET 5, kelas penyulitan rentetan serupa dengan satu yang disediakan sebagai penyelesaian berfungsi dengan baik. Walau bagaimanapun, selepas menaik taraf kepada .NET 6, rentetan yang dinyahsulit telah terputus pada titik tertentu.

Analisis Masalah

Punca asasnya terletak pada perubahan terputus antara . NET 5 dan .NET 6. Secara khusus, gelagat DeflateStream, GZipStream dan CryptoStream telah menyimpang daripada itu jenis Strim lain.

Penyelesaian

Perubahan ini mempengaruhi kaedah Nyahsulit dalam kelas penyulitan. Sebelum ini, apabila memanggil cryptoStream.Read, operasi dijangka akan selesai hanya apabila penimbal telah diisi atau aliran mencapai penghujungnya. Walau bagaimanapun, dalam .NET 6, cryptoStream.Read kini lengkap walaupun hanya satu bait telah dibaca atau aliran asas mengembalikan 0, menunjukkan tiada lagi data tersedia.

Oleh itu, kaedah Decrypt perlu dikemas kini kepada mengendalikan tingkah laku ini dengan betul. Satu penyelesaian adalah untuk menyemak berapa banyak bait cryptoStream.Baca sebenarnya membaca dan memastikan semua data dibaca:

var plainTextBytes = new byte[cipherTextBytes.Length];
var decryptedByteCount = cryptoStream.Read(plainTextBytes, 0, plainTextBytes.Length);
Salin selepas log masuk

Sebagai alternatif, CopyTo atau StreamReader boleh digunakan untuk kod yang lebih cekap dan ringkas:

using (var plainTextStream = new MemoryStream())
{
    cryptoStream.CopyTo(plainTextStream);
    var plainTextBytes = plainTextStream.ToArray();
    return Encoding.UTF8.GetString(plainTextBytes, 0, plainTextBytes.Length);
}
Salin selepas log masuk
using (var plainTextReader = new StreamReader(cryptoStream))
{
    return plainTextReader.ReadToEnd();
}
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa Penyahsulitan Rentetan Saya Diputuskan Selepas Menaik taraf daripada .NET 5 kepada .NET 6?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan