$ echo -n "apfjxkic-omyuobwd339805ak:60a06cd2ddfad610b9490d359d605407" | base64
YXBmanhraWMtb215dW9id2QzMzk4MDVhazo2MGEwNmNkMmRkZmFkNjEwYjk0OTBkMzU5ZDYwNTQw
Nw==
Output sudah kembali sebelumnya Nw==
. Apa cara yang benar untuk menghasilkan base64 di Linux?
5
Apakah Anda yakin output berisi baris baru, dan bukan hanya pembungkus jendela Anda? Perintah itu bekerja dengan baik untuk saya di mac. OS apa yang Anda gunakan?
—
Ian
RFC 2045, yang mendefinisikan Base64, MEMBUTUHKAN baris baru setelah 76 karakter (maks). Apa yang membuat Anda berpikir bahwa teladan Anda bukanlah cara yang benar?
—
MSalters
@MSalters RFC 4648 secara khusus membahas masalah itu. Implementasi TIDAK HARUS menambahkan umpan baris ke data yang disandikan basis kecuali spesifikasi yang merujuk pada dokumen ini secara eksplisit mengarahkan pembuat enkode untuk menambahkan umpan baris setelah sejumlah karakter tertentu. => implementasi ini tidak benar menurut RFC 4648, asalkan ia mengklaim menghasilkan output yang di-encode base64. Yang lebih menarik, halaman manual GNU base64 (dalam pertanyaan?) Secara khusus mengacu pada RFC 3548, yang juga menentukan tidak ada pembungkus secara default, dan yang RFC 4648 usang.
—
Bob
@ Bob: RFC kurang menghormati stabilitas API; alat base64 tidak bisa hanya mengubah format output tanpa merusak skrip.
—
MSalters
@Malter Saya tidak dapat memastikan versi yang lebih lama tidak ada, tetapi GNU base64 ditulis pada tahun 2004 dan AFAICT selalu mengklaim mengikuti RFC 3548. RFC 3548 berisi klausul "HARUS TIDAK menambahkan umpan baris" yang sama. Jadi bahkan implementasi aslinya pun "salah". Paling tidak, implementasinya tidak sesuai dengan dokumentasinya. Bagaimanapun, Anda bertanya mengapa contoh OP benar dan mereferensikan RFC; tanggapan saya adalah RFC yang benar yang sebenarnya mendefinisikan base64 secara terpisah. Jika jawaban Anda adalah "karena alasan historis", ya, tapi OP tidak salah di sini.
—
Bob