Base32
Base32 Decoder
Base32 Encoder
Tool for decoding / encoding in Base32 according to RFC 4648. Base 32 is a variant of Base64 which uses letters and numbers from 2 to 7 (and =) as basic symbols.
Answers to Questions
How to encrypt using Base32 cipher?
The Base32 code is described in RFC 4648 standard. It allows to encode with 32 characters:
ABCDEFGHIJKLMNOPQRSTUVWXYZ234567 and the = symbol optionally used as the final character (as in Base64).
The message to be encoded is first treated as a binary string (according to a predefined encoding such as ASCII or Unicode).
Example: Base is encoded in ASCII (8-bit) 01000010,01100001,01110011,01100101
The string is then split every 5 bits, and optionally completed with 0s.
Example: The split gives the 32 bits 01000,01001,10000,10111,00110,11001,01 (three 0 needed at the end)
Each 5-tuple is then encoded in base 32 by the letter or the corresponding number according to the conversion table:
Binary | Decimal | Base32 |
---|---|---|
00000 | 0 | A |
00001 | 1 | B |
00010 | 2 | C |
00011 | 3 | D |
00100 | 4 | E |
00101 | 5 | F |
00110 | 6 | G |
00111 | 7 | H |
01000 | 8 | I |
01001 | 9 | J |
01010 | 10 | K |
01011 | 11 | L |
01100 | 12 | M |
01101 | 13 | N |
01110 | 14 | O |
01111 | 15 | P |
10000 | 16 | Q |
10001 | 17 | R |
10010 | 18 | S |
10011 | 19 | T |
10100 | 20 | U |
10101 | 21 | V |
10110 | 22 | W |
10111 | 23 | X |
11000 | 24 | Y |
11001 | 25 | Z |
11010 | 26 | 2 |
11011 | 27 | 3 |
11100 | 28 | 4 |
11101 | 29 | 5 |
11110 | 30 | 6 |
11111 | 31 | 7 |
Example: 01000 for I , 01001 for J , and so on. Until IJQXGZI
The standard indicates that the Base32 message must have a number of characters multiple of 8. The message obtained must therefore be completed with the character = (padding char).
Example: Finally, the message Base is base32-encoded IJQXGZI=
How to decrypt Base32 cipher?
The Base32 decoding is similar to a mathematical base change.
Example: Decode the message INXWIZI= coded in Base 32
Delete the final = of the encoded message.
Example: INXWIZI= becomes INXWIZI
Replace each character with its 5-bit value (cf conversion table) to create a binary string.
Example: I for 01000 , N for 01101 , etc. Until 01000,01101,10111,10110,01000,11001,01000
Read the binary string according to the encoding used (ASCII, Unicode, etc.)
Example: The message is divided into bytes (8-bits) as follows: 01000011,01101111,01100100,01100101 (the last string composed of 0 is ignored), which corresponds to ASCII (or Unicode) string Code
How to recognize a Base32 ciphertext?
A B32-encoded message
— is composed only of the characters ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ234567 =’ (no 0,1,8,9)
— theoretically has a number of character multiple of 8.
— ends with 0,1,3,4 or 6 characters = (equal).
— has a length greater than 40 to 60% of the original message
Why aren’t digit 0 and 1 used in Base32?
The digit 0 is avoided not to be confused with the letter O , and the number 1 is also avoided for its resemblance to the letter I .
What are the variants of the Base32 encoding?
Base32 is similar to the Base64 which is much more commmonly used.
The zbase32 code is a Base32 variant wanting to be more human-readable and writtable.
The mathematical basis 32 (or base32hex) is the most natural version for writing numbers in base 32 and uses the symbols 0123456789abcdefghijklmnopqrstuv
Source code
dCode retains ownership of the online ‘Base32’ tool source code. Except explicit open source licence (indicated CC / Creative Commons / free), any algorithm, applet or snippet (converter, solver, encryption / decryption, encoding / decoding, ciphering / deciphering, translator), or any function (convert, solve, decrypt / encrypt, decipher / cipher, decode / encode, translate) written in any informatic language (PHP, Java, C#, Python, Javascript, Matlab, etc.) no data, script or API access will be for free, same for Base32 download for offline use on PC, tablet, iPhone or Android !
Need Help ?
Please, check our community Discord for help requests!
Base N Convert
Base Conversion Calculator (advanced)
Converting Base 10 to Base N
Tool to write numbers in base N (change of basis / convert). In numeral systems, a base (radix) is the value of successive powers when writing a number.
Answers to Questions
What are default symbols?
A number in base 10 is written with the digits’ 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9` are used. For other bases, it is common to use letters, more precisely the following characters: 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ (Beware to lowercase and uppercase from base 37) in order to write numbers up to base 62.
How to convert from a base to another?
A number $ N $ in base $ b $ can be written with an addition of powers in this base $ b $.
Example: The number $ N = 123_ <(10)>$ (base 10) verifies the equality $$ N = 789 = 7 \times 100 + 8 \times 10 + 9 \times 1 = 7 \times 10^2 + 8 \times 10^1 + 9 \times 10^0 $$
$ N= $ | $ c2 $ | $ c1 $ | $ c0 $ |
$ 789 $ | $ 7 $ | $ 8 $ | $ 9 $ |
Take a number $ N $ made of $ n $ digits $ < c_
$$ N_ <(b)>= \< c_
To compute a base change, base $ 10 $ is the reference, or an intermediate step.
Example: To change from base $ 3 $ to base $ 7 $, calculate base $ 3 $ to base $ 10 $, then from base $ 10 $ to base $ 7 $.
How to convert from base 10 to base n?
Use the following algorithm to convert from base $ 10 $ to base $ n $:
$$ q_0=n; i=0; \mbox < while >q_i > 0 \mbox < do >(r_i = q_i \mbox < mod >b; q_= q_i \mbox < div >b ; i = i+1 ) $$
The converted number is composed of digits $ r_ $ (with $ r_0 $ the digit of the units).
Example: $ N = 123_ <(10)>$ (base 10) is converted to base $ 7 $:
$$ q_0 = 123 \\ r_0 = 123 \mbox < mod >7 = 4 \;\;\; q_1 = 123 \mbox < div >7 = 17 \\ r_1 = 17 \mbox < mod >7 = 3 \;\;\; q_1 = 17 \mbox < div >7 = 2 \\ r_2 = 2 \mbox < mod >7 = 2 \;\;\; q_2 = 2 \mbox < div >7 = 0 \\ 123_ <(10)>= 234_ <(7)>$$
How to convert from base n to base 10?
To convert a number $ N_1 $ written in base $ b $ in a number $ N_2 $ written in base $ 10 $, use the fact that $ N_1 $ is made of $ n $ digits $ < c_
$$ N_2 = c_
The number $ N_2 $ is written in base $ 10 $.
The algorithm is equivalent to the calculation $$ (( c_
Example: Take the number $ 123_ <(7)>$ (in base $ 7 $), and apply the conversion algorithm:
$$ 123 = \ <1,2,3\>\\ N = 1 \\ N = 1*7+2 = 9 \\ N = 9*7+3 = 66 \\ N = 123_ <(7)>= 66_ <(10)>$$
So $ 123_ <(7)>$ is equal to $ 66_ <(10)>$ in base $ 10 $.
What are usual bases?
— base 2 (binary system — base2) in informatics
— base 3 (trinary system — base3)
— base 8 (octal system — base8)
— base 9 (nonary system — base9)
— base 10 (decimal system — base10)
— base 12 (duodecimal system — base12), for month or hours
— base 16 (hexadecimal system — base16) in informatics for bytes
— base 20 (vigesimal system — base20) by Mayas and Aztecs
— base 60 (sexagesimal system — base60) for minutes, seconds by Sumerians and Babylonians.
— base 62 (full alphanumeric system — base62)
All the basics can be used for computer coding or any other math problem.
Example: Encoding and decoding base64 is common on the Internet.
Source code
dCode retains ownership of the online ‘Base N Convert’ tool source code. Except explicit open source licence (indicated CC / Creative Commons / free), any algorithm, applet or snippet (converter, solver, encryption / decryption, encoding / decoding, ciphering / deciphering, translator), or any function (convert, solve, decrypt / encrypt, decipher / cipher, decode / encode, translate) written in any informatic language (PHP, Java, C#, Python, Javascript, Matlab, etc.) no data, script or API access will be for free, same for Base N Convert download for offline use on PC, tablet, iPhone or Android !
Need Help ?
Please, check our community Discord for help requests!
Мануал по методу кодирования base 16/32/64.
История появления кодировки.
Кодировка base берет свое начало еще с тех времен, когда не было определено сколько бит должно содержаться в одном байте. Сейчас всем известно, что в одном байте содержится 8 бит и с помощью него можно закодировать 256 различных значений, но так было не всегда.
Раньше были популярны кодировки, содержащие 6, 7 или 8 бит в байте. Таким образом, 6 бит позвояло закодировать в одном байте 64 различных значения, а 7-ми битная кодировка 128 значений. Казалось бы, что этого достаточно для того, чтобы закодировать буквенно-цифровой алфавит. Но вскоре была принята кодировка, содержащая 8 бит в одном байте.
Такая кодировка привнесла много проблем. В первую очередь, эти проблемы были связаны с оборудованием, которое уже работало на других кодировках, где байт содержал 6 или 7 бит. Но помимо этого была проблема обрезания 8-го бита в системах электронной почты, т.к. весь сфот был заточен под 7-ми или 6-ти битную кодировку. Как пример, 7-ми битная кодировка могла спокойно обнулить каждый 8-ой бит, что приводило к потери данных.
Тут на помощь пришел base 64. Идея base64 проста — обратимое кодирование, с возможностью восстановления, которое переводит все символы восьмибитной кодовой таблицы в символы, гарантированно сохраняющиеся при передаче данных в любых сетях и между любыми устройствами. В основе алгоритма лежит сведение трех восьмерок битов (24) к четырем шестеркам (тоже 24) и представление этих шестерок в виде символов ASCII. Таким образом получается обратимое шифрование, единственным недостатком которого будет увеличивающийся при кодировании размер — в соотношении 4:3.
Ниже приведена схема смещения битов в base 64
Пример:
Возьмем русский текст «АБВГД». В двоичной форме в кодировке Windows-1251 мы получим 5 байтов: 11000000 11000001 11000010
11000011 11000100 (00000000) — лишний нулевой байт нужен, чтобы общее число бит делилось на 6
Разделим эти биты на группы по 6: 110000 001100 000111 000010
110000 111100 010000 000000
Берем массив символов «ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/» и получившиеся числа переводим в эти символы, используя их, как индексы массива, получаем «wMHCw8Q». Остается только добавить в конце один символ «=», как указание на один лишний нулевой байт, который мы добавляли на первом шаге и получить окончательный результат: «АБВГД»: base64 = «wMHCw8Q=» Возможно и обратное преобразование.
Base 16
Base 16 — это система счисления по основанию 16, т.е шестнадцатиричная система счисления. С ней вы могли и должны были столкнуться на уроках информатики. Алфавит этой кодировки состоит из цифр (0-9) и букв (A-F). Алгоритм преобразования остается примерно тем же, разве что теперь нам надо исходные двоичные числа разделить на тетрады (группы по 4 бита) и перевести их в соотвествии с таблицой кодировки в символы ASCII.
Base 32
Base 32 использует 32 символа: A-Z (или a-z), 2-7. Может содержать в конце кодированной последовательности несколько спецсимволов (по аналогии с base64). В данном алгоритме преобразования нам необходимо будет разделять двоичные значения на группы по 5 бит.
Основные отличия кодировок
Base64
Позволяет кодировать информацию, представленную набором байтов, используя всего 64 символа: A-Z, a-z, 0-9, /, +. В конце кодированной последовательности может содержаться несколько спецсимволов (обычно “=”).
Преимущества: Позволяет представить последовательность любых байтов в печатных символах. В сравнении с другими Base-кодировками дает результат, который составляет только 133.(3)% от длины исходных данных.
Недостатки: Регистрозависимая кодировка.
Base32
Использует только 32 символа: A-Z (или a-z), 2-7. Может содержать в конце кодированной последовательности несколько спецсимволов (по аналогии с base64).
Преимущества: Последовательность любых байтов переводит в печатные символы. Регистронезависимая кодировка. Не используются цифры, слишком похожие на буквы (например, 0 похож на О, 1 на l).
Недостатки: Кодированные данные составляют 160% от исходных.
Как закодировать/декодировать base?
В основном в заданиях по ctf вам будет попадаться base 64. Его легко определить, т.к. на конце будет знак «=». Например, мы кодировали строку «АБВГД» в base 64 и у нас получился результат «wMHCw8Q=». Как мы видим, здесь присутсвует знак «=», который говорит нам о том, что строка зашифрована в base 64.
Итак, как же ее декодировать? Все очень просто. Base 16, 32, 64 легко декодировать онлайн-сервисами. Т.е. вбиваете в гугле подобный запрос:»base 64 online decoder» и вам будет выдан большой перечнь ссылок на онлайн декодеры. Берем первый попавшийся, разве что для уточнения стоит воспользоваться сразу несколькимим онлайн декодерами.
Процесс кодирования почти ничем не отличается, разве, что вам нужно вбить в запросе не «decode», а «encrypt». Бывает, что нужно обращать внимание на то, какой кодировкой вы пользуетесь. В русскоязычной версии ОС «Windows» обычно используется кодировка windows-1251.
Практика
Задание 1:
Взгляните на эту строку:
ZmxhZ2lzVzBXdGhpc2lzQkFTRTY0Cg==
На конце мы видим «=», причем двойное, что сразу наводит на мысль, что это base 64. Воспользуемся онлайн-декодером.
В ответе мы видим расшифрованную строку — это и есть наш флаг:
flagisW0WthisisBASE64
Задание 2:
Посмотрим на эту строку:
MZWGCZ33MJQXGZJTGJ6Q
На конце мы не видим знака «=». На base 16 тоже не похоже, тогда попробуем base 32.
Снова воспользуемся онлайн-декодером.
И вот наш флаг: flag
Задание 3:
Была получена такая строка: 666C61677B48656C6C6F2C20576F726C64217D
Здесь нет ни знака «=», алфавит ограниченный. Похоже на base 16 или просто hex.
Как и прежде, пользуемся онлайн-декодером.
Отлично, у нас есть флаг, но это же задание можно было решить и через hex декодер.