Pada banyak kasus string yang di encode dengan base64 banyak menimbulkan masalah karena memiliki karakter tersembunyi ‘\n’ atau biasa diterjemahkan baris baru. Contoh pengaplikasiannya pada secret Kubernetes.
base64 encoded password

database_password:|
  AeuJzHvC9vqmanb4RgKA

Bila dilihat dengan kubectl, tidak terlihat keanehan dari secret yang kita buat

$ kubectl get secrets/superpassword --template={{.data.database_password}} | base64 -d 
AeuJzHvC9vqmanb4RgKA

Beberapa contoh lainnya

echo "PassS4nga74MAn" | base64
# output
UGFzc1M0bmdhNzRNQW4K

decode string tersebut

echo "UGFzc1M0bmdhNzRNQW4K" | base64 -d
# output
PassS4nga74MAn

string yang tidak terlihat tersebut bisa kita deteksi dengan od

$ echo "UGFzc1M0bmdhNzRNQW4K" | base64 -d | od -c 
0000000   P   a   s   s   S   4   n   g   a   7   4   M   A   n  \n
0000017

dari hasil tersebut terlihat ada karakter \n.

Solusi untuk kasus diatas adalah dengan menambahkan parameter -n pada echo

echo -en "PassS4nga74MAn" | base64
# output
UGFzc1M0bmdhNzRNQW4=

bila di decode

echo "UGFzc1M0bmdhNzRNQW4=" | base64 -d 
# output
PassS4nga74MAn
 
echo "UGFzc1M0bmdhNzRNQW4=" | base64 -d | od -c
# output
0000000   P   a   s   s   S   4   n   g   a   7   4   M   A   n
0000016

Banyak Baris

Bila jumlah string lebih dari 76 karakter maka base64 akan membagi string tersebut menjadi dua baris atau lebih. Mari kita lihat pada contoh dibawah ini

echo -n "Bila jumlah string lebih dari 76 karakter maka base64 akan membagi string tersebut menjadi dua baris atau lebih" | base64
# output
QmlsYSBqdW1sYWggc3RyaW5nIGxlYmloIGRhcmkgNzYga2FyYWt0ZXIgbWFrYSBiYXNlNjQgYWth
biBtZW1iYWdpIHN0cmluZyB0ZXJzZWJ1dCBtZW5qYWRpIGR1YSBiYXJpcyBhdGF1IGxlYmlo

cara agar hasil encode dari base64 menjadi satu baris adalah dengan menambahkan w0

echo -n "Bila jumlah string lebih dari 76 karakter maka base64 akan membagi string tersebut menjadi dua baris atau lebih" | base64 -w0
# output
QmlsYSBqdW1sYWggc3RyaW5nIGxlYmloIGRhcmkgNzYga2FyYWt0ZXIgbWFrYSBiYXNlNjQgYWthbiBtZW1iYWdpIHN0cmluZyB0ZXJzZWJ1dCBtZW5qYWRpIGR1YSBiYXJpcyBhdGF1IGxlYmlo

Contoh yang banyak digunakan adalah encode certificate, daripada menggunakan echo, lebih baik disimpan dalam file lalu di encode dengan base64

$ base64 -w0 /tmp/sample.crt
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSU9MVENDRFJXZ0F3SUJBZ0lRRXpPU1VDRkFxTThTZ0IybUdKYUZYakFOQmdrcWhraUc5dzBCQVFzRkFEQTcKTVFzd0NRWURWUVFHRXdKVlV6RWVNQndHQTFVRUNoTVZSMjl2WjJ4bElGUnlkWE4wSUZObGNuWnBZMlZ6TVF3dwpDZ1lEVlFRREV3TlhVakl3SGhjTk1qVXdOakF5TURnek5UTXdXaGNOTWpVd09ESTFNRGd6TlRJNVdqQVhNUlV3CkV3WURWUVFEREF3cUxtZHZiMmRzWlM1amIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUU8KNVBZK1NDTEp2UE1JR05BSzlpcmQ4U3F6ODNILzVBWnZPUW5LUzNWZmRCYXdXM1dia0poUHZHZG1BTXZqNmZPQQo3UnRwSTA5QjRVd2FhbGV6ZHpVNG80SU1HakNDREJZd0RnWURWUjBQQVFIL0JBUURBZ2VBTUJNR0ExVWRKUVFNCk1Bb0dDQ3NHQVFVRkJ3TUJNQXdHQTFVZEV3RUIvd1FDTUFBd0hRWURWUjBPQkJZRUZKLzlNdTZnVHM1U1NMUXAKcGxkNmV4b0h2TStCTUI4R0ExVWRJd1FZTUJhQUZONGJIdTE1RmRRK055VERJYnZzTkRsdFFySXdNRmdHQ0NzRwpBUVVGQndFQkJFd3dTakFoQmdnckJnRUZCUWN3QVlZVmFIUjBjRG92TDI4dWNHdHBMbWR2YjJjdmQzSXlNQ1VHCkNDc0dBUVVGQnpBQ2hobG9kSFJ3T2k4dmFTNXdhMmt1WjI5dlp5OTNjakl1WTNKME1JSUo4QVlEVlIwUkJJSUoKNXpDQ0NlT0NEQ291WjI5dloyeGxMbU52YllJV0tpNWhjSEJsYm1kcGJtVXVaMjl2WjJ4bExtTnZiWUlKS2k1aQpaRzR1WkdWMmdoVXFMbTl5YVdkcGJpMTBaWE4wTG1Ka2JpNWtaWGFDRWlvdVkyeHZkV1F1WjI5dloyeGxMbU52CmJZSVlLaTVqY205M1pITnZkWEpqWlM1bmIyOW5iR1V1WTI5dGdoZ3FMbVJoZEdGamIyMXdkWFJsTG1kdmIyZHMKWlM1amIyMkNDeW91WjI5dloyeGxMbU5oZ2dzcUxtZHZiMmRzWlM1amJJSU9LaTVuYjI5bmJHVXVZMjh1YVc2QwpEaW91WjI5dloyeGxMbU52TG1wd2dnNHFMbWR2YjJkc1pTNWpieTUxYTRJUEtpNW5iMjluYkdVdVkyOXRMbUZ5CmdnOHFMbWR2YjJkc1pTNWpiMjB1WVhXQ0R5b3VaMjl2WjJ4bExtTnZiUzVpY29JUEtpNW5iMjluYkdVdVkyOXQKTG1OdmdnOHFMbWR2YjJkc1pTNWpiMjB1YlhpQ0R5b3VaMjl2WjJ4bExtTnZiUzUwY29JUEtpNW5iMjluYkdVdQpZMjl0TG5adWdnc3FMbWR2YjJkc1pTNWtaWUlMS2k1bmIyOW5iR1V1WlhPQ0N5b3VaMjl2WjJ4bExtWnlnZ3NxCkxtZHZiMmRzWlM1b2RZSUxLaTVuYjI5bmJHVXVhWFNDQ3lvdVoyOXZaMnhsTG01c2dnc3FMbWR2YjJkc1pTNXcKYklJTEtpNW5iMjluYkdVdWNIU0NEeW91WjI5dloyeGxZWEJwY3k1amJvSVJLaTVuYjI5bmJHVjJhV1JsYnk1agpiMjJDRENvdVozTjBZWFJwWXk1amJvSVFLaTVuYzNSaGRHbGpMV051TG1OdmJZSVBaMjl2WjJ4bFkyNWhjSEJ6CkxtTnVnaEVxTG1kdmIyZHNaV051WVhCd2N5NWpib0lSWjI5dloyeGxZWEJ3Y3kxamJpNWpiMjJDRXlvdVoyOXYKWjJ4bFlYQndjeTFqYmk1amIyMkNER2RyWldOdVlYQndjeTVqYm9JT0tpNW5hMlZqYm1Gd2NITXVZMjZDRW1kdgpiMmRzWldSdmQyNXNiMkZrY3k1amJvSVVLaTVuYjI5bmJHVmtiM2R1Ykc5aFpITXVZMjZDRUhKbFkyRndkR05vCllTNXVaWFF1WTI2Q0Vpb3VjbVZqWVhCMFkyaGhMbTVsZEM1amJvSVFjbVZqWVhCMFkyaGhMV051TG01bGRJSVMKS2k1eVpXTmhjSFJqYUdFdFkyNHVibVYwZ2d0M2FXUmxkbWx1WlM1amJvSU5LaTUzYVdSbGRtbHVaUzVqYm9JUgpZVzF3Y0hKdmFtVmpkQzV2Y21jdVkyNkNFeW91WVcxd2NISnZhbVZqZEM1dmNtY3VZMjZDRVdGdGNIQnliMnBsClkzUXVibVYwTG1OdWdoTXFMbUZ0Y0hCeWIycGxZM1F1Ym1WMExtTnVnaGRuYjI5bmJHVXRZVzVoYkhsMGFXTnoKTFdOdUxtTnZiWUlaS2k1bmIyOW5iR1V0WVc1aGJIbDBhV056TFdOdUxtTnZiWUlYWjI5dloyeGxZV1J6WlhKMgphV05sY3kxamJpNWpiMjJDR1NvdVoyOXZaMnhsWVdSelpYSjJhV05sY3kxamJpNWpiMjJDRVdkdmIyZHNaWFpoClpITXRZMjR1WTI5dGdoTXFMbWR2YjJkc1pYWmhaSE10WTI0dVkyOXRnaEZuYjI5bmJHVmhjR2x6TFdOdUxtTnYKYllJVEtpNW5iMjluYkdWaGNHbHpMV051TG1OdmJZSVZaMjl2WjJ4bGIzQjBhVzFwZW1VdFkyNHVZMjl0Z2hjcQpMbWR2YjJkc1pXOXdkR2x0YVhwbExXTnVMbU52YllJU1pHOTFZbXhsWTJ4cFkyc3RZMjR1Ym1WMGdoUXFMbVJ2CmRXSnNaV05zYVdOckxXTnVMbTVsZElJWUtpNW1iSE11Wkc5MVlteGxZMnhwWTJzdFkyNHVibVYwZ2hZcUxtY3UKWkc5MVlteGxZMnhwWTJzdFkyNHVibVYwZ2c1a2IzVmliR1ZqYkdsamF5NWpib0lRS2k1a2IzVmliR1ZqYkdsagpheTVqYm9JVUtpNW1iSE11Wkc5MVlteGxZMnhwWTJzdVkyNkNFaW91Wnk1a2IzVmliR1ZqYkdsamF5NWpib0lSClpHRnlkSE5sWVhKamFDMWpiaTV1WlhTQ0V5b3VaR0Z5ZEhObFlYSmphQzFqYmk1dVpYU0NIV2R2YjJkc1pYUnkKWVhabGJHRmtjMlZ5ZG1salpYTXRZMjR1WTI5dGdoOHFMbWR2YjJkc1pYUnlZWFpsYkdGa2MyVnlkbWxqWlhNdApZMjR1WTI5dGdoaG5iMjluYkdWMFlXZHpaWEoyYVdObGN5MWpiaTVqYjIyQ0dpb3VaMjl2WjJ4bGRHRm5jMlZ5CmRtbGpaWE10WTI0dVkyOXRnaGRuYjI5bmJHVjBZV2R0WVc1aFoyVnlMV051TG1OdmJZSVpLaTVuYjI5bmJHVjAKWVdkdFlXNWhaMlZ5TFdOdUxtTnZiWUlZWjI5dloyeGxjM2x1WkdsallYUnBiMjR0WTI0dVkyOXRnaG9xTG1kdgpiMmRzWlhONWJtUnBZMkYwYVc5dUxXTnVMbU52YllJa0tpNXpZV1psWm5KaGJXVXVaMjl2WjJ4bGMzbHVaR2xqCllYUnBiMjR0WTI0dVkyOXRnaFpoY0hBdGJXVmhjM1Z5WlcxbGJuUXRZMjR1WTI5dGdoZ3FMbUZ3Y0MxdFpXRnoKZFhKbGJXVnVkQzFqYmk1amIyMkNDMmQyZERFdFkyNHVZMjl0Z2cwcUxtZDJkREV0WTI0dVkyOXRnZ3RuZG5ReQpMV051TG1OdmJZSU5LaTVuZG5ReUxXTnVMbU52YllJTE1tMWtiaTFqYmk1dVpYU0NEU291TW0xa2JpMWpiaTV1ClpYU0NGR2R2YjJkc1pXWnNhV2RvZEhNdFkyNHVibVYwZ2hZcUxtZHZiMmRzWldac2FXZG9kSE10WTI0dWJtVjAKZ2d4aFpHMXZZaTFqYmk1amIyMkNEaW91WVdSdGIySXRZMjR1WTI5dGdoUm5iMjluYkdWellXNWtZbTk0TFdOdQpMbU52YllJV0tpNW5iMjluYkdWellXNWtZbTk0TFdOdUxtTnZiWUllS2k1ellXWmxiblZ3TG1kdmIyZHNaWE5oCmJtUmliM2d0WTI0dVkyOXRnZzBxTG1kemRHRjBhV011WTI5dGdoUXFMbTFsZEhKcFl5NW5jM1JoZEdsakxtTnYKYllJS0tpNW5kblF4TG1OdmJZSVJLaTVuWTNCalpHNHVaM1owTVM1amIyMkNDaW91WjNaME1pNWpiMjJDRGlvdQpaMk53TG1kMmRESXVZMjl0Z2hBcUxuVnliQzVuYjI5bmJHVXVZMjl0Z2hZcUxubHZkWFIxWW1VdGJtOWpiMjlyCmFXVXVZMjl0Z2dzcUxubDBhVzFuTG1OdmJZSUtZV2t1WVc1a2NtOXBaSUlMWVc1a2NtOXBaQzVqYjIyQ0RTb3UKWVc1a2NtOXBaQzVqYjIyQ0V5b3VabXhoYzJndVlXNWtjbTlwWkM1amIyMkNCR2N1WTI2Q0Jpb3VaeTVqYm9JRQpaeTVqYjRJR0tpNW5MbU52Z2dabmIyOHVaMnlDQ25kM2R5NW5iMjh1WjJ5Q0ZHZHZiMmRzWlMxaGJtRnNlWFJwClkzTXVZMjl0Z2hZcUxtZHZiMmRzWlMxaGJtRnNlWFJwWTNNdVkyOXRnZ3BuYjI5bmJHVXVZMjl0Z2hKbmIyOW4KYkdWamIyMXRaWEpqWlM1amIyMkNGQ291WjI5dloyeGxZMjl0YldWeVkyVXVZMjl0Z2doblozQm9kQzVqYm9JSwpLaTVuWjNCb2RDNWpib0lLZFhKamFHbHVMbU52YllJTUtpNTFjbU5vYVc0dVkyOXRnZ2g1YjNWMGRTNWlaWUlMCmVXOTFkSFZpWlM1amIyMkNEU291ZVc5MWRIVmlaUzVqYjIyQ0VXMTFjMmxqTG5sdmRYUjFZbVV1WTI5dGdoTXEKTG0xMWMybGpMbmx2ZFhSMVltVXVZMjl0Z2hSNWIzVjBkV0psWldSMVkyRjBhVzl1TG1OdmJZSVdLaTU1YjNWMApkV0psWldSMVkyRjBhVzl1TG1OdmJZSVBlVzkxZEhWaVpXdHBaSE11WTI5dGdoRXFMbmx2ZFhSMVltVnJhV1J6CkxtTnZiWUlGZVhRdVltV0NCeW91ZVhRdVltV0NHbUZ1WkhKdmFXUXVZMnhwWlc1MGN5NW5iMjluYkdVdVkyOXQKZ2hNcUxtRnVaSEp2YVdRdVoyOXZaMnhsTG1OdWdoSXFMbU5vY205dFpTNW5iMjluYkdVdVkyNkNGaW91WkdWMgpaV3h2Y0dWeWN5NW5iMjluYkdVdVkyNkNGU291WVdsemRIVmthVzh1WjI5dloyeGxMbU52YlRBVEJnTlZIU0FFCkREQUtNQWdHQm1lQkRBRUNBVEEyQmdOVkhSOEVMekF0TUN1Z0thQW5oaVZvZEhSd09pOHZZeTV3YTJrdVoyOXYKWnk5M2NqSXZOelZ5TkZwNVFUTjJRVEF1WTNKc01JSUJCQVlLS3dZQkJBSFdlUUlFQWdTQjlRU0I4Z0R3QUhZQQpFdkZPTkwxVGNreUVCaG5Eano5NkUvam50V0tIaUp4dE1BV0U2K1dHSmpvQUFBR1hMLzhMU3dBQUJBTUFSekJGCkFpRUF0STkwb3NjanRHdGx0TFErNngvTWxXWXQrR1JVQjczWTBRNTFTcmJkWTBvQ0lHSkZRMUU0WnNQcURlcUgKTDFuVVRIL3ZYeXhTRWpNSW5DekNUcGU3eXNsU0FIWUFmVmtlRXVGNEtuc2NZV2Q4WHYzNDBJZGNGS0JPbFo2NQpBeS9aRG93dWViZ0FBQUdYTC84UFdRQUFCQU1BUnpCRkFpQjJ1a2VnUnpvQ3N4QW5FMERFaURZSURPLzQxUE5GCmlyUUQyT1RWcGVRQ29BSWhBTHRTclc0b1djaFJqai9mZFBzM2R6RXpRbU1zV05jREtzdTEwSnpUOUpaVE1BMEcKQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFzcWxCNUIvdkcvSGNGZ2ozWVZHclJNTmtvNW1mb2k3akhHM2RWT0E0ZApkbzVBa1dUQ1pBdVIrT0ZnNWVIQS9NUEF0NWh3NzdXRi9GZmxuYnhsYS9yT2QwNFVLVmJHdVA5QTYyZEVMcW5ZCkJZd0ZPR1dYZTRJY1V3Y1pYV1o1S3RUVTZxVitKNjk5NkxQYVFXMmVaeHIzQ2FBUkhRbHM3U3REeExMVHFxUHgKL2k0cXhHeTZGQVN2UytXdVQrc2pab2ZKZlg4VFV0K245Yk51Mi9xNlhNWFFkb2NXUkxuNktsaHlmWVB0anJSMwoxeTlMamdmOEkvWkcxNFYxSVZvRFdOdFo3eHM3RGdSRW13Zy9zZERpVWYrSkFINllPWm1SSHFxNFdLY1dCcVFDCnVFMVk4elBqK1BlbWhYVTJqd3BRQUEzS3NxaUMxaGQ2N1lVeFRFS2JIZkd1Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K

Leave a comment

Your email address will not be published. Required fields are marked *