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