Kodowanie i dekodowanie ciągów Base64 w Pythonie

Kodowanie i dekodowanie ciągów Base64 w Pythonie

Kodowanie Base64 służy do konwersji bajtów zawierających dane binarne lub tekstowe na znaki ASCII. Kodowanie zapobiega uszkodzeniu danych podczas ich przesyłania lub przetwarzania w systemie tekstowym. W tym artykule omówimy kodowanie i dekodowanie Base64 oraz jego zastosowania do kodowania i dekodowania danych binarnych i tekstowych.

Kodowanie Base64:
Jest to rodzaj konwersji bajtów na znaki ASCII. lista dostępnych znaków Base64 znajduje się poniżej:

  • 26 wielkich liter
  • 26 małych liter
  • 10 liczb
  • + i / dla nowych linii

Każdy znak Base64 reprezentuje 6 bitów danych. należy również zauważyć, że z oczywistych powodów nie jest on przeznaczony do szyfrowania.
Aby przekonwertować ciąg znaków na znak Base64 należy wykonać następujące kroki:

  • Pobierz wartość ASCII każdego znaku w ciągu.
  • Oblicz 8-bitowy binarny odpowiednik wartości ASCII
  • Konwertuj 8-bitowy fragment znaków na fragmenty 6-bitowe, ponownie grupując cyfry
  • Konwertuj 6-bitowe grupy binarne na odpowiadające im wartości dziesiętne.
  • Użyj tabeli kodowania Base64, aby wyrównać odpowiednie wartości Base64 dla każdej wartości dziesiętnej.

Poniższy obraz przedstawia tabelę kodowania Base64.

Źródło obrazu: Wikipedia

Używanie Pythona do kodowania ciągów znaków:
W Pythonie moduł base64 służy do kodowania i dekodowania danych. Najpierw ciągi znaków są konwertowane na obiekty przypominające bajty, a następnie kodowane przy użyciu modułu base64. Poniższy przykład pokazuje, że implementacja ciągów kodujących nie składa się ze znaków Base64.

Przykład:




import> base64> > sample_string> => 'GeeksForGeeks is the best'> sample_string_bytes> => sample_string.encode(> 'ascii'> )> > base64_bytes> => base64.b64encode(sample_string_bytes)> base64_string> => base64_bytes.decode(> 'ascii'> )> > print> (f> 'Encoded string: {base64_string}'> )>

Wyjście:

Encoded string: R2Vla3NGb3JHZWVrcyBpcyB0aGUgYmVzdA== 

Używanie Pythona do dekodowania ciągów znaków:
Dekodowanie ciągu Base64 jest dokładnie odwrotne do kodowania. Najpierw konwertujemy ciągi Base64 na niezakodowane bajty danych, a następnie konwertujemy obiekt podobny do bajtu na ciąg znaków. Poniższy przykład przedstawia dekodowanie powyższego przykładowego wyniku ciągu kodowania.

Przykład:




import> base64> > > base64_string> => ' R2Vla3NGb3JHZWVrcyBpcyB0aGUgYmVzdA =='> base64_bytes> => base64_string.encode(> 'ascii'> )> > sample_string_bytes> => base64.b64decode(base64_bytes)> sample_string> => sample_string_bytes.decode(> 'ascii'> )> > print> (f> 'Decoded string: {sample_string}'> )>

Wyjście:

Decoded string: GeeksForGeeks is the best