Kesukaran dalam Penukaran Tatasusunan Byte kepada Rentetan dan Penukaran Semula
Soalan:
Mengapa tatasusunan bait yang diperoleh selepas menukar rentetan kembali daripada tatasusunan bait berbeza daripada tatasusunan bait asal, menyebabkan ralat penyahsulitan?
Penyelesaian:
Pengekodan data yang disulitkan kerana rentetan boleh bermasalah kerana sifat pengekodan rentetan. Untuk data binari, menggunakan tatasusunan bait adalah disyorkan. Walau bagaimanapun, jika storan rentetan diperlukan, seseorang mesti memilih pengekodan dengan pemetaan satu sama satu antara bait dan aksara, seperti ISO-8859-1. Menggunakan pengekodan seperti UTF-16 boleh mengakibatkan kehilangan data disebabkan penambahan penanda pesanan bait dan potensi untuk pemetaan aksara yang tidak jelas.
Pertimbangkan contoh berikut:
String decoded = new String(encryptedByteArray, "ISO-8859-1"); byte[] encoded = decoded.getBytes("ISO-8859-1");
Menggunakan ISO-8859 -1 mengekalkan tatasusunan bait asal, memastikan penyahsulitan yang betul.
UTF-16 gagal disebabkan oleh:
Atas ialah kandungan terperinci Mengapakah Penukaran Tatasusunan Byte kepada Rentetan dan Belakang Mengakibatkan Kehilangan Data Semasa Penyahsulitan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!