Pertanyaan Apakah tidak masalah untuk menghapus baris baru dalam pengkodean Base64


Aplikasi java saya menggunakan pengkodean base64 yang menempatkan baris baru (\n) setelah setiap 76 karakter. Saya harus meletakkan string yang disandikan ini dalam file properti dan baris baru memecah fungsionalitas.

Ketika saya melakukan encodedString.replaceAll("\n", ""); semuanya berjalan dengan baik, tetapi saya hanya ingin memastikan bahwa ini diharapkan dan saya tidak memperkenalkan masalah tersembunyi.


32
2017-11-13 11:30


asal


Jawaban:


Memecahkan string berenkode base64 menjadi beberapa baris telah diperlukan untuk banyak program lama yang tidak dapat menangani antrean panjang. Program yang ditulis di Java biasanya dapat menangani antrean panjang karena mereka tidak perlu melakukan manajemen memori sendiri. Selama garis Anda lebih pendek dari 64 juta karakter, seharusnya tidak ada masalah.

Dan karena Anda tidak memerlukan baris baru, Anda tidak boleh menghasilkannya sama sekali, jika memungkinkan.


32
2017-11-19 07:51



Beberapa encoder Base64 menambahkan karakter EOL seperti CRLF ('\ r \ n') ke string yang dikodekan. Kamu dapat memakai Base64.encodeBase64URLSafe untuk menyingkirkannya:

Mengkodekan data biner menggunakan variasi URL-aman dari algoritma base64 tetapi tidak memotong output. Variasi URL-aman memancarkan - dan _ bukannya + dan / karakter. Catatan: tidak ada padding yang ditambahkan.


5
2018-06-09 19:50



Seharusnya tidak menjadi masalah karena banyak decoder mampu memecahkan kode teks yang dikodekan tanpa pemisah baris baru. Pilihan paling aman adalah melakukan decoding sendiri dan memverifikasinya.


-3
2017-11-13 11:45