Base64-koodaus ja -dekoodaus komentoriviltä

Koodaus on prosessi, jota käytetään datan muuntamiseen muotoon, jota tarvitaan tehokkaaseen siirtoon tai tallennukseen. Sen sijaan dekoodaus on koodausmenetelmän vastakohta, joka muuntaa koodatun datan takaisin alkuperäiseen muotoonsa. Base64 on koodausprosessi, jossa binäärinen data muunnetaan ASCII:ksi. Base64-koodausta tarvitaan useimmiten siirto-ongelmien välttämiseksi, joita syntyy, kun binääritietoja siirretään tekstipohjaisiin järjestelmiin, jotka eivät pysty käsittelemään binääritietoja kunnolla. Tämän seurauksena tieto katoaa tai korruptoituu siirron aikana.

Joitakin koodauksen käyttökohteita ovat:

  • Datan pakkaaminen
  • Datan piilottaminen
  • Datan siirtäminen toisessa muodossa

Datan koodaamiseen Base64 käyttää vain aakkosia, numeroa ja =-symbolia. Esimerkiksi c2FtcGxlCg== on kelvollista koodattua dataa, kun taas b?HV3.Zh2J== ei ole kelvollista koodattua dataa.

Tässä artikkelissa kerromme, miten base64-komennolla koodataan ja puretaan merkkijonossa tai tiedostossa oleva data.

Olemme suorittaneet komennot Ubuntu 20.04 Focal Fossa -järjestelmässä. Voit kuitenkin suorittaa samat komennot myös muissa Linux-jakeluissa. Komentojen suorittamiseen olemme käyttäneet komentorivin Terminal-sovellusta, johon pääsee Ctrl+Alt+T-näppäinyhdistelmällä.

Base64-syntaksi

Tässä on syntaksi Base64-koodauksen käyttämiseen:

base64

Vaihtoehdot

Joitakin komentorivin vaihtoehtoja, joita voidaan käyttää base64-komennon kanssa, ovat:

-d tai –decode

Käytä tätä vaihtoehtoa tiedoston tai merkkijonon purkamiseen.

–help

Käytä tätä vaihtoehtoa näyttääksesi base64:n käyttöön liittyvän ohjeen.

-i, –ignore-garbage

Käytä tätä vaihtoehtoa dekoodauksen aikana sivuuttaaksesi muut kuin aakkoset

–version

Käytä tätä vaihtoehtoa näyttääksesi versiotietoja

Enkoodaaminen merkkijono

Voit helposti koodata merkkijonon base64-komennolla. Jos haluat esimerkiksi koodata esimerkkitekstin ”Welcome to Linux” base64:ksi, komento olisi seuraava:

$ echo ”Tervetuloa Linuxiin” | base64

Tämä komento koodaa merkkijonon tekstin base64:llä ja tulostaa koodatun tekstin vakiolähdölle, kuten seuraavassa kuvakaappauksessa näkyy

Voit myös tallentaa koodatun tulosteen tiedostoon vakiolähdölle tulostamisen sijasta käyttämällä uudelleenohjausoperaattoria (>). Seuraava komento koodaa tekstin ja tallentaa tulosteen tiedostoon nimeltä ”encodedfile.txt:

$ echo ”Welcome to Linux” | base64 > encodedfile.txt

Voit tarkastella koodattua tiedostoa cat-komennolla:

$ cat encodedfile.txt

Dekoodattu merkkijono

Voit myös purkaa base64-koodatun tekstin käyttämällä -decode- tai -d-vaihtoehtoa. Jos haluat esimerkiksi purkaa base64-koodatun tekstin ”V2VsY29tZSB0byBMaW51eAo=”, komento olisi:

$ echo ”V2VsY29tZSB0byBMaW51eAo=” | base64 –decode

Tämä komento purkaa base64-koodatun tekstin ja tulostaa alkuperäisen tekstin vakiolähdölle, kuten seuraavassa kuvakaappauksessa näkyy.

Voit myös tallentaa dekoodatun tulosteen tiedostoon sen sijaan, että tulostaisit sen vakiolähtöön, käyttämällä uudelleenohjausoperaattoria (>). Seuraava komento purkaa koodatun tekstin ja tallentaa alkuperäisen tekstin tiedostoon nimeltä ”decodedfile.txt:

$ echo ”V2VsY29tZSB0byBMaW51eAo=” | base64 -decode > decodedfile.txt

Tekstitiedoston koodaaminen

Komentoa base64 voidaan käyttää myös tekstitiedoston koodaamiseen. Jos haluat esimerkiksi koodata tekstitiedoston nimeltä ”testfile.txt”, komento olisi seuraava:

$ base64 testfile.txt

Komento koodaa määritetyn tekstitiedoston ja tulostaa sen koodatun muodon vakiolähdölle seuraavan kuvan mukaisesti.

Voit myös tallentaa koodatun tulosteen tiedostoon sen sijaan, että tulostaisit sen vakiolähtöön, käyttämällä uudelleenohjausoperaattoria (>). Seuraava komento muuntaa tiedoston tekstin base64:n avulla ja tallentaa tulosteen toiseen tiedostoon nimeltä ”encodedfile.txt:

Voit tarkastella koodattua tiedostoa cat-komennolla:

$ cat encodedfile.txt

Tekstitiedoston purkaminen

Voit purkaa koodatun tekstitiedoston käyttämällä -decode- tai -d-valintaa. Jos haluat esimerkiksi purkaa base64-koodatun tekstitiedoston ”encodedfile.txt”, komento olisi:

$ base64 -d encodedfile.txt

Tämä komento purkaa base64-koodatun tekstitiedoston ja tulostaa alkuperäisen tekstin vakiolähdölle seuraavan kuvakaappauksen mukaisesti.

Voit myös tallentaa dekoodatun tulosteen tiedostoon sen sijaan, että tulostaisit sen vakiolähtöön, käyttämällä uudelleenohjausoperaattoria (>). Seuraava komento purkaa koodatun tekstin ja tallentaa alkuperäisen tekstin tiedostoon nimeltä ”decodedfile.txt, jota voidaan myöhemmin tarkastella cat-komennolla.

$ base64 -d encodedfile.txt > decodedfile.txt

Käyttäjän syötteen koodaaminen

Käyttämällä base64-koodausta voimme koodata mitä tahansa käyttäjän antamaa tietoa. Tätä tarkoitusta varten meidän on luotava skripti, joka ottaa käyttäjän syötteen, koodaa sen käyttämällä base64-koodausta ja tulostaa koodatun datan vakiolähtöön.

Luo skripti ”test.sh” seuraavalla koodilla:

#!/bin/bash
# Tulosta viesti, jossa pyydetään syötettä
echo ”Provide Some data to encode”
# Tallenna syöte muuttujaan nimeltä ”data”
lue data
# Koodaa käyttäen base64-koodausta ja tallenna tuloste muuttujaan ”encod_data”
encod_data=`echo -n $data | base64`
# Tulosta koodattu ulostulo
echo ”Enkoodattu teksti on : $encod_data”

Aja skripti seuraavasti:

$ ./test.sh

Skriptin suorittamisen jälkeen sinua pyydetään syöttämään tiedot, jotka haluat koodata. Kirjoita joitakin tietoja ja paina Enter-näppäintä, niin saat koodatun tulosteen näytölle.

Käyttäjän avaimen validointi

Katsotaan nyt esimerkki base64-purkamisesta. Käytämme base64-dekoodausta käyttäjän validiteetin tarkistamiseen. Tätä varten luomme skriptin, joka kysyy käyttäjältä avainta. Sitten se vertaa syötettyä avainta ennalta määritettyyn avaimeen, joka puretaan ensin base64-purkamisella. Jos käyttäjän syöttämä avain täsmää ennalta määritetyn avaimen kanssa, se tulostaa viestin ”Olet syöttänyt kelvollisen avaimen”, muussa tapauksessa näytölle tulostuu viesti ”Syöttämäsi avain ei ole kelvollinen”

Luo skripti ”test1.sh” seuraavalla koodilla:

#!/bin/bash
# Tulosta viesti, jossa pyydetään syöttöä
echo ”Syötä avaimesi”
# Tallenna käyttäjän antama avain muuttujaan nimeltä ”key”
lue key
# Purkakaa koodattu avain (QWJjMTIzCg) ja tallenna tuloste muuttujaan nimeltä ”orig_key”
orig_key=`echo ’QWJjMTIzCg==’ | base64 –decode`
# Vertaa käyttäjän syöttämää avainta dekoodattuun avaimeen
if ; then
#jos avain täsmää, tulosta tämä:
echo ”Olet syöttänyt kelvollisen avaimen”
else
#jos avain ei täsmää, tulosta tämä:
echo ”Syöttämäsi avain ei ole kelvollinen”
fi

Suorita skripti seuraavasti:

$ ./test1.sh

Skriptin suorittamisen jälkeen sinulta kysytään avainta. Kirjoita avain ja paina Enter. Jos syötetty avain täsmää ennalta määritetyn dekoodatun avaimen kanssa, saat viestin ” Olet syöttänyt kelvollisen avaimen”, muussa tapauksessa näytölle tulostuu viesti ” Syöttämäsi avain ei ole kelvollinen ”.

Miten komentoriviltä käsin voit käyttää base64:ää merkkijonon tai tiedoston enkoodaamiseen ja dekoodaamiseen. Tulokset voidaan joko tulostaa vakiotulosteeseen tai tallentaa tiedostoon. Muista kuitenkin, että koodaus ei ole samanlainen kuin salaus, ja koodattu tieto voidaan helposti paljastaa, joten koodausta ei suositella käytettäväksi arkaluontoisen tiedon siirtämiseen.

Vastaa

Sähköpostiosoitettasi ei julkaista.