Base64-kodning og afkodning fra kommandolinjen

Kodning er den proces, der bruges til at konvertere data til et format, der er nødvendigt for effektiv overførsel eller lagring. I modsætning hertil er afkodning det modsatte af kodningsmetoden, som konverterer de kodede data tilbage til det oprindelige format. Base64 er den kodningsproces, hvor de binære data konverteres til ASCII. Base64-kodning er for det meste nødvendig for at undgå de transmissionsproblemer, der opstår, når binære data overføres til tekstbaserede systemer, som ikke kan håndtere de binære data korrekt. Som følge heraf går oplysningerne tabt eller ødelægges under transmissionen.

Nogle af anvendelsesområderne for kodning er:

  • Datakomprimering
  • Databeskyttelse
  • Overførsel af data i et andet format

Til kodning af data anvender Base64 kun alfabet, tal og =-symbol. For eksempel er c2FtcGxlCg== en gyldig kodet data, mens b?HV3.Zh2J== ikke er en gyldig kodet data.

I denne artikel vil vi forklare, hvordan man bruger base64-kommandoen til at kode og afkode data i en streng eller en fil.

Vi har udført kommandoerne på Ubuntu 20.04 Focal Fossa-systemet. Du kan dog også udføre de samme kommandoer på andre Linux-distributioner. Til at køre kommandoerne har vi brugt kommandolinjeprogrammet Terminal, som du kan få adgang til ved hjælp af tastaturgenvejen Ctrl+Alt+T.

Base64 Syntaks

Her er syntaksen for kodning ved hjælp af Base64:

base64

Optioner

Nogle af de kommandolinjeindstillinger, der kan bruges med base64-kommandoen, er:

-d eller –decode

Brug denne indstilling til at afkode en fil eller en streng.

–help

Brug denne indstilling for at få vist hjælp vedrørende brugen af base64.

-i, –ignore-garbage

Brug denne indstilling under afkodning for at ignorere ikke-alfabetiske tegn

–version

Brug denne indstilling for at få vist versionsoplysninger

Kodning af streng

Du kan nemt kode en streng ved hjælp af base64-kommandoen. Hvis du f.eks. vil kode en eksempeltekst “Welcome to Linux” til base64, vil kommandoen være:

$ echo “Welcome to Linux” | base64

Denne kommando vil kode teksten i strengen ved hjælp af base64 og udskrive den kodede tekst til standardudgangen som vist i følgende skærmbillede

Du kan også gemme den kodede udgang til en fil i stedet for at udskrive til standardudgangen ved hjælp af omdirigeringsoperatoren (>). Følgende kommando vil kode teksten og gemme output til en fil med navnet “encodedfile.txt:

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

For at få vist den kodede fil kan du bruge kommandoen cat:

$ cat encodedfile.txt

Dekodning af streng

Du kan også afkode den base64-kodede tekst ved hjælp af -decode eller -d-indstillingen. For eksempel for at afkode den base64-kodede tekst “V2VsY29tZSB0byBMaW51eAo=” ville kommandoen være:

$ echo “V2VsY29tZSB0byBMaW51eAo=” | base64 –decode

Denne kommando vil afkode den base64-kodede tekst og udskrive den originale tekst på standardudgangen som vist i følgende skærmbillede.

Du kan også gemme det dekodede output til en fil i stedet for at udskrive til standardudgangen ved hjælp af omdirigeringsoperatoren (>). Følgende kommando afkoder den kodede tekst og gemmer den originale tekst i en fil med navnet “decodedfile.txt:

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

Kodning af tekstfil

Kommandoen base64 kan også bruges til at kode en tekstfil. For at kode en tekstfil ved navn “testfile.txt” vil kommandoen f.eks. være:

$ base64 testfile.txt

Denne kommando vil kode den angivne tekstfil og udskrive dens kodede form på standardudgangen som vist i følgende skærmbillede.

Du kan også gemme det kodede output til en fil i stedet for at udskrive til standardudgangen ved hjælp af omdirigeringsoperatoren (>). Følgende kommando konverterer teksten i filen ved hjælp af base64 og gemmer output til en anden fil med navnet “encodedfile.txt:

For at få vist den kodede fil kan du bruge kommandoen cat:

$ cat encodedfile.txt

Dekodning af tekstfil

For at afkode en kodet tekstfil skal du bruge -decode eller -d-indstillingen. For eksempel for at afkode base64-kodet tekstfil “encodedfile.txt” vil kommandoen være:

$ base64 -d encodedfile.txt

Denne kommando vil afkode den base64-kodede tekstfil og udskrive den originale tekst på standardudgangen som vist i følgende skærmbillede.

Du kan også gemme det dekodede output til en fil i stedet for at udskrive til standardudgangen ved hjælp af omdirigeringsoperatoren (>). Følgende kommando afkoder den kodede tekst og gemmer den originale tekst i en fil med navnet “decodedfile.txt, som senere kan ses ved hjælp af kommandoen cat.

$ base64 -d encodedfile.txt > decodedfile.txt

Kodning af brugerinput

Med base64-kodningen kan vi kode alle brugerleverede data. Til dette formål skal vi oprette et script, der tager brugerinput, koder det ved hjælp af base64-kodning og udskriver de kodede data på standardudgangen.

Opret et script “test.sh” med følgende kode:

#!/bin/bash
# Udskriv besked for at bede om input
echo “Provide Some data to encode”
# Gem input til en variabel ved navn “data”
read data
# Kodér ved hjælp af base64-kodning, og gem output til en variabel “encod_data”
encod_data=`echo -n $data | base64`
# Udskriv kodet output
echo “Encoded text is : $encod_data”

Kør scriptet som følger:

$ ./test.sh

Når du har kørt scriptet, bliver du bedt om at indtaste de data, som du ønsker at kode. Indtast nogle data, og tryk på Enter, og du vil modtage det kodede output på skærmen.

Validering af brugernøgle

Nu skal vi se et eksempel på base64-afkodning. Vi vil bruge base64-afkodningen til at kontrollere brugerens gyldighed. For at gøre dette vil vi oprette et script, der vil bede brugeren om en nøgle. Derefter vil det matche den indtastede nøgle med den foruddefinerede nøgle, som først vil blive afkodet af base64-afkodning. Hvis den nøgle, som brugeren har indtastet, stemmer overens med den foruddefinerede nøgle, vil den udskrive meddelelsen “You have entered a valid key”, ellers vil du se “The key you have entered is not valid “udskrevet på skærmen.

Opret et script “test1.sh” med følgende kode:

#!/bin/bash
# Udskriv besked for at bede om input
echo “Indtast din nøgle”
# Gem den nøgle, som brugeren har angivet, til en variabel med navnet “key”
read key
# Afkod den kodede nøgle (QWJjMTIzCg) og gem output til en variabel med navnet “orig_key”
orig_key=`echo ‘QWJjMTIzCg==’ | base64 –decode`
# Sammenlign den nøgle, der er indtastet af brugeren, med den dekodede nøgle
if ; then
#hvis nøglen passer, udskrives dette:
echo “You have entered a valid key”
else
#if key does not match, print this:
echo “The key you have entered is not valid”
fi

Kør scriptet som følger:

$ ./test1.sh

Når du har kørt scriptet, bliver du bedt om at angive nøglen. Indtast nøglen, og tryk på Enter. Hvis den indtastede nøgle stemmer overens med den foruddefinerede dekodede nøgle, vil du modtage meddelelsen ” Du har indtastet en gyldig nøgle”, ellers vil meddelelsen “Den indtastede nøgle er ikke gyldig” blive udskrevet på skærmen.

Det er sådan, du kan bruge base64 til at kode og afkode en streng eller en fil fra kommandolinjen. Resultaterne kan enten udskrives på standardudgangen eller gemmes i en fil. Husk dog, at kodning ikke svarer til kryptering, og man kan let afsløre de kodede data, så det anbefales ikke at bruge kodning til overførsel af følsomme data.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.