Koder i dekoder z własnym alfabetem

Wpisz własny alfabet lub zacznij od szablonu, a następnie koduj lub dekoduj za jego pomocą. Wybierz metodę dużej liczby dla alfabetu o dowolnej długości lub grupy bitów, aby uzyskać wynik w stylu RFC 4648.

Działa w całości w przeglądarce. Nic nie jest wysyłane.

Jak używać

  1. Wpisz alfabet w polu „Alfabet” albo wybierz gotowy w polu „Szablon” i go zmodyfikuj. Każdy znak może wystąpić tylko raz.
  2. W polu „Metoda” wybierz „Duża liczba (jak Base58)” dla alfabetu o dowolnej długości lub „Grupy bitów (jak RFC 4648)” dla alfabetów liczących 2, 4, 8, 16, 32 lub 64 znaki.
  3. Przy grupach bitów możesz opcjonalnie wpisać w polu „Znak dopełnienia” znak, który nie należy do alfabetu.
  4. Wybierz „Koduj” i wpisz tekst albo wybierz „Dekoduj” i wklej ciąg zapisany tym alfabetem.

Dwa sposoby zamiany bajtów na znaki

Duża liczba działa jak Base58. Całe wejście jest odczytywane jako jedna duża liczba całkowita i wielokrotnie dzielone przez długość alfabetu, a każda reszta wybiera jeden znak. Metoda działa dla dowolnego alfabetu o co najmniej 2 znakach, np. 10, 36, 58 lub 62. Wiodące bajty zerowe są zapisywane jako pierwszy znak alfabetu, więc przetrwają kodowanie i ponowne dekodowanie. Nie ma dopełnienia, a dane wejściowe są ograniczone do ok. 20 KB, bo przy długich danych obliczenia stają się powolne.

Grupy bitów działają jak RFC 4648. Wejście jest dzielone na fragmenty o stałej liczbie bitów: 1 bit dla alfabetu 2-znakowego, 4 bity dla 16, 5 bitów dla 32 i 6 bitów dla 64. Każdy fragment to indeks w alfabecie. Dokładnie tak działają hex, Base32 i Base64, a długość wyniku zależy wyłącznie od długości danych wejściowych.

Dlaczego obie metody dają różne wyniki

Jedna metoda koduje wartość liczbową danych, druga ich bity pozycja po pozycji. Wyniki zwykle się różnią, a ciąg trzeba dekodować tą samą metodą, którą go utworzono.

AlfabetWejścieGrupy bitówDuża liczba
Standardowy Base64HiSGk=Ehp
Base32 według RFC 4648HiJBUQ====SDJ
01A010000011000001
0123456789Hiniedostępne18537

Przy grupach bitów i = jako dopełnieniu standardowe alfabety odtwarzają zwykły Base64 i Base32. Duża liczba pomija wiodący bit zerowy litery A, ponieważ zapisuje wartość, a nie stałą liczbę bitów. Gdy alfabetem jest dziesięć cyfr, metoda po prostu pokazuje bajty Hi jako liczbę dziesiętną.

Znak dopełnienia dotyczy tylko grup bitów. Wynik jest dopełniany do wielokrotności 4 znaków dla alfabetów 64-znakowych i do wielokrotności 8 znaków dla alfabetów 32- i 8-znakowych. Przy 2, 4 lub 16 znakach każdy bajt wypełnia całe znaki, więc dopełnienie nigdy nie jest potrzebne.

Warunki prawidłowego alfabetu

  • Co najmniej dwa znaki.
  • Bez powtórzeń. Dekoder przypisuje każdemu znakowi dokładnie jedną wartość. Gdyby a oznaczało zarówno 0, jak i 10, ciągu, który je zawiera, nie dałoby się zdekodować.
  • Wielkość liter ma znaczenie. a i A to różne znaki.
  • Znak dopełnienia nie może należeć do alfabetu, bo nie dałoby się go odróżnić od danych.

Wszystko działa w przeglądarce, więc alfabet i dane pozostają na urządzeniu.

Kiedy przydaje się własny alfabet

  • Zaciemnione identyfikatory. Przetasowany alfabet zamienia identyfikatory w tokeny bez oczywistego wzorca. To ukrywa, ale nie chroni: każdy, kto zna alfabet, może je zdekodować.
  • Formaty własnościowe lub starsze. Skopiuj alfabet danego systemu z jego dokumentacji i dekoduj jego dane bezpośrednio.
  • Nauka. Porównuj długości alfabetów i obie metody, aby zobaczyć, jak działa zmiana podstawy. Kodowania ze stałym alfabetem znajdziesz na stronach Base58 i Base62.

Najczęściej zadawane pytania

Czym różni się duża liczba od grup bitów?

Metoda dużej liczby przelicza całe wejście jako jedną liczbę całkowitą na nową podstawę, tak jak Base58, i działa z alfabetem o dowolnej długości. Grupy bitów dzielą wejście na fragmenty o stałej liczbie bitów, tak jak Base64, i wymagają alfabetu o 2, 4, 8, 16, 32 lub 64 znakach.

Dlaczego mój własny alfabet Base64 nie daje takiego wyniku jak standardowy Base64?

Standardowy Base64 używa grup bitów. Aby uzyskać ten sam wynik, wybierz metodę „Grupy bitów (jak RFC 4648)” i ustaw = jako znak dopełnienia. Metoda dużej liczby daje z tego samego alfabetu zupełnie inny ciąg.

Dlaczego powtarzające się znaki są niedozwolone?

Każdy znak musi dekodować się do dokładnie jednej wartości. Powtórzony znak miałby dwa znaczenia i nie dałoby się niezawodnie odtworzyć oryginalnych danych.

Czy można używać znaku dopełnienia z metodą dużej liczby?

Nie. Wynik metody dużej liczby nie ma stałego rozmiaru bloku, więc nie ma czego dopełniać. Opcja „Znak dopełnienia” dotyczy tylko grup bitów.

Czy własny alfabet to forma szyfrowania?

Nie. To nadal kodowanie bez klucza. Przetasowany alfabet może utrudnić rozpoznanie danych na pierwszy rzut oka, ale nigdy nie należy go używać do ochrony tajnych informacji.