Base32 - Base32
Base32 je základna -32 číselná soustava. Používá sadu 32 číslice, z nichž každý může být reprezentován 5 bity (25). Jeden způsob, jak reprezentovat čísla Base32 v a čitelné člověkem způsobem je použití standardní 32 znakové sady, například dvacet šest velkých písmen A – Z a číslice 2–7. Mnoho jiných variací se však používá v různých kontextech.
Toto je příklad čísla Base32 představovaného pomocí dříve popsané 32místné sady znaků (IPFS CIDv1 v kódování velkých písmen Base32): BAFYBEICZSSCDSBS7FFQZ55ASQDF3SMV6KLCW3GOFSZVWLYARCI47BGF354
Výhody
Base32 má řadu výhod oproti Base64:
- Výsledný znaková sada je vše jeden případ, který může být často prospěšný při použití a malá a velká písmena souborový systém, DNS jména, mluvený jazyk nebo lidská paměť.
- Výsledek lze použít jako název souboru, protože nemůže obsahovat symbol '/', kterým je Unix oddělovač cesty.
- Abecedu lze vybrat, aby se zabránilo podobně vypadající dvojici různých symbolů, takže řetězce lze přesně přepsat ručně. (Například RFC 4648 sada symbolů vynechává číslice jedna, osm a nula, protože je lze zaměnit s písmeny „I“, „B“ a „O“.)
- Výsledek bez polstrování lze zahrnout do a URL bez kódování jakékoli znaky.
Base32 má také výhody oproti hexadecimální /16. základna:
- Reprezentace Base32 zabírá zhruba o 20% méně místa. (1000 bitů trvá 200 znaků, ve srovnání s 250 pro Base16).
Nevýhody
Reprezentace Base32 zabírá zhruba o 20% více prostoru než Base64. Také proto, že kóduje 5 bajtů na 8 znaků (spíše než 3 bajty na 4 znaky), je vyplnění na hranici 8 znaků větší zátěží pro krátké zprávy.
Base64 | Base32 | |
---|---|---|
8-bit | 133% | 160% |
7-bit | 117% | 140% |
Abeceda RFC 4648 Base32
Nejpoužívanější abeceda Base32 je definována v RFC 4648. Využívá abeceda z A –Z, následován 2 –7. 0 a 1 jsou přeskočeny kvůli jejich podobnosti s písmeny Ó a Já (tedy „2“ má ve skutečnosti desítkovou hodnotu 26 ).
Za určitých okolností není polstrování vyžadováno ani použito (polstrování lze odvodit z délky řetězce modulo 8). RFC 4648 uvádí, že musí být použita výplň, pokud není ve specifikaci normy odkazující na RFC výslovně uvedeno jinak. Vyloučení polstrování je užitečné při použití dat kódovaných v base32 v tokenech URL nebo názvech souborů, kde by znak polstrování mohl představovat problém.
Hodnota | Symbol | Hodnota | Symbol | Hodnota | Symbol | Hodnota | Symbol | |||
---|---|---|---|---|---|---|---|---|---|---|
0 | A | 8 | Já | 16 | Q | 24 | Y | |||
1 | B | 9 | J | 17 | R | 25 | Z | |||
2 | C | 10 | K. | 18 | S | 26 | 2 | |||
3 | D | 11 | L | 19 | T | 27 | 3 | |||
4 | E | 12 | M | 20 | U | 28 | 4 | |||
5 | F | 13 | N | 21 | PROTI | 29 | 5 | |||
6 | G | 14 | Ó | 22 | Ž | 30 | 6 | |||
7 | H | 15 | P | 23 | X | 31 | 7 | |||
polstrování | = |
Alternativní verze
Při změně abecedy Base32 mají všechny alternativní standardy podobné kombinace alfanumerických symbolů.
z-base-32
z-base-32[1] je kódování Base32 navržené tak, aby bylo jednodušší pro lidské použití a kompaktnější. To zahrnuje 1, 8 a 9 ale vylučuje l, proti a 2. Rovněž permutuje abecedu, takže snáze používané znaky jsou ty, které se vyskytují častěji. Kompaktně kóduje bitové řetězce, jejichž délka v bitech není násobkem 8, a vynechává koncové znaky výplně. z-base-32 byl použit v Mnet open source projekt a aktuálně se používá v Phil Zimmermann je ZRTP protokolu a v Tahoe-LAFS open source projekt.
Hodnota | Symbol | Hodnota | Symbol | Hodnota | Symbol | Hodnota | Symbol | |||
---|---|---|---|---|---|---|---|---|---|---|
0 | y | 8 | E | 16 | Ó | 24 | A | |||
1 | b | 9 | j | 17 | t | 25 | 3 | |||
2 | n | 10 | k | 18 | 1 | 26 | 4 | |||
3 | d | 11 | m | 19 | u | 27 | 5 | |||
4 | r | 12 | C | 20 | w | 28 | h | |||
5 | F | 13 | str | 21 | i | 29 | 7 | |||
6 | G | 14 | q | 22 | s | 30 | 6 | |||
7 | 8 | 15 | X | 23 | z | 31 | 9 |
Crockford's Base32
Další alternativní design pro Base32 vytvořil Douglas Crockford, který navrhuje použít pro kontrolní součet další znaky.[2] Vylučuje písmena I, L a O, aby nedošlo k záměně s číslicemi. Rovněž vylučuje písmeno U, aby se snížila pravděpodobnost náhodné oplzlosti.
Knihovny pro kódování binárních dat v Crockford's Base32 jsou k dispozici v různých jazycích.
Hodnota | Kódovat číslici | Dekódovat číslici | Hodnota | Kódovat číslici | Dekódovat číslici | |
---|---|---|---|---|---|---|
0 | 0 | 0 o O. | 16 | G | g G. | |
1 | 1 | 1 I I l L | 17 | H | h H | |
2 | 2 | 2 | 18 | J | j J | |
3 | 3 | 3 | 19 | K. | k K. | |
4 | 4 | 4 | 20 | M | m M | |
5 | 5 | 5 | 21 | N | n N | |
6 | 6 | 6 | 22 | P | p P | |
7 | 7 | 7 | 23 | Q | q Q | |
8 | 8 | 8 | 24 | R | r R | |
9 | 9 | 9 | 25 | S | s S | |
10 | A | a A. | 26 | T | t T | |
11 | B | b B | 27 | PROTI | v V | |
12 | C | c C. | 28 | Ž | w Ž | |
13 | D | d D | 29 | X | x X | |
14 | E | e E | 30 | Y | y Y | |
15 | F | f F | 31 | Z | z Z |
Electrologica
Starší formu notace základny 32 používali programátoři pracující na Electrologica X1 reprezentovat adresy strojů. „Číslice“ byly reprezentovány jako desetinná čísla od 0 do 31. Například 12-16 by představovalo adresu stroje 400 (= 12*32 + 16).
base32hex
Triacontakaidecimal[Citace je zapotřebí ] je další alternativní design pro Base 32, který se rozšiřuje hexadecimální přirozenějším způsobem a nejprve jej navrhl Christian Lanctot, programátor pracující v Software Sage, v dopise Dr. Dobb časopis v březnu 1999[3] jako navrhované řešení řešení chyby Y2K a označované jako „Double Hex“. Tato verze byla popsána v RFC 2938 pod názvem „Base-32“. RFC 4648, přičemž potvrzuje existující použití této verze v NSEC3, označuje jako base32hex a nedoporučuje jej označovat jako „base32“.
Podobně jako hexadecimální jsou použité číslice 0-9 následované po sobě následujícími písmeny abecedy. To odpovídá číslicím používaným JavaScript parseInt ()
funkce[4] a Krajta int ()
konstruktor[5] když je zadána základna větší než 10 (například 16 nebo 32). Také si zachovává hexadecimální vlastnost zachování bitového pořadí řazení reprezentovaných dat, na rozdíl od base-32 nebo base-64 RFC 4648.[6]
Na rozdíl od mnoha jiných notových systémů základny 32 je triacontakaidecimal souvislý a zahrnuje znaky, které mohou vizuálně konfliktovat. S právem písmo je možné vizuálně rozlišit mezi 0, O a 1, I. Jiná písma jsou nevhodná, protože kontext, který obvykle poskytuje angličtina, neposkytuje notační systém vyjadřující čísla. Volba písma však není řízena notací nebo kódováním, a proto je riskantní předpokládat, že bude použito rozlišitelné písmo.
Hodnota | Symbol | Hodnota | Symbol | Hodnota | Symbol | Hodnota | Symbol | |||
---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 9 | 9 | 18 | Já | 27 | R | |||
1 | 1 | 10 | A | 19 | J | 28 | S | |||
2 | 2 | 11 | B | 20 | K. | 29 | T | |||
3 | 3 | 12 | C | 21 | L | 30 | U | |||
4 | 4 | 13 | D | 22 | M | 31 | PROTI | |||
5 | 5 | 14 | E | 23 | N | |||||
6 | 6 | 15 | F | 24 | Ó | |||||
7 | 7 | 16 | G | 25 | P | |||||
8 | 8 | 17 | H | 26 | Q | podložka | = |
Geohash
Vidět Algoritmus Geohash, slouží k reprezentaci hodnot zeměpisné šířky a délky v jednom (bitově prokládaném) kladném celém čísle.[7] Reprezentace Geohash v base32 používá všechna desetinná místa (0-9) a téměř malá písmena, kromě písmen „a“, „i“, „l“, „o“, jak ukazuje následující mapa znaků:
Desetinný | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Základna 32 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | b | C | d | E | F | G | |||
Desetinný | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | |||
Základna 32 | h | j | k | m | n | str | q | r | s | t | u | proti | w | X | y | z |
Videohry
Před NVRAM se stal univerzálním, několik videoher pro Nintendo platformy používaly základní čísla 32 pro hesla.Tyto systémy vynechávají samohlásky, aby zabránily náhodnému vydání hry rouhavý Znaky tedy obecně představují malou variaci následující sady: 0–9, B, C, D, F, G, H, J, K, L, M, N, P, Q, R, S, T, V, W, X, Y, Z a některá interpunkční znaménka. Mezi hry, o nichž je známo, že takový systém používají, patří Mario chybí!, Marioův stroj času, Tetris Blast, a Pán prstenů (Super NES).
Abeceda bezpečná pro slovo
Abeceda Base32 bezpečná pro slovo je rozšířením Otevřete kód umístění Base20 abeceda. Tato abeceda používá 8 číselných číslic a 12 číslic písmen, která nerozlišují velká a malá písmena, aby se zabránilo náhodnému vytvoření slov. Při zacházení s abecedou jako s malými a velkými písmeny se vytvoří sada číslic 32 (8 + 12 + 12).
Desetinný | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Základna 32 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | C | F | G | H | J | M | P | Q | |||
Desetinný | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | |||
Základna 32 | R | PROTI | Ž | X | C | F | G | h | j | m | str | q | r | proti | w | X |
Software
Base32 je zápis pro kódování libovolných dat bajtů pomocí omezené sady symbolů, které mohou lidé pohodlně používat a zpracovávat počítači.
Base32 se skládá ze sady symbolů složené z 32 různých znaků a také z algoritmu pro kódování libovolných sekvencí 8bitových bajtů do abecedy Base32. Protože k reprezentaci každého 8bitového vstupního bajtu je potřeba více než jeden 5bitový symbol Base32, určuje také požadavky na povolené délky řetězců Base32 (což musí být násobky 40 bitů). Úzce související systém Base64 naproti tomu používá sadu 64 symbolů.
Implementace Base32 v C / C ++,[8][9] Perl,[10] Jáva,[11] JavaScript[12] Krajta,[13] Jít[14] a Ruby[15] jsou dostupné.
Viz také
„Síly 2“ souvisejících základen: | Další základy: | Aplikace base32:
|
Reference
- ^ O'Whielacronx, Zooko (2009). „Lidsky orientované kódování base-32“.
- ^ Douglas Crockford. "Base 32". Archivovány od originál dne 2002-12-23.
- ^ Lanctot, Christian (01.03.1999). „Lepší rande? (druhé písmeno pod tímto nadpisem) - Písmena". Dr. Dobb.
- ^ "parseInt () - JavaScript". Webové dokumenty MDN. Mozilla.
- ^ „Vestavěné funkce“. Dokumentace Pythonu. Softwarová nadace Python. Archivovány od originál dne 2018-10-26. Citováno 2017-08-09.
- ^ Josefsson, Simon (2006). "7. Zakódování základny 32 s rozšířenou šestnáctkovou abecedou". RFC 4648: Datová kódování Base16, Base32 a Base64. IETF.
- ^ „Tipy a triky - geohash.org“. geohash.org. Citováno 2020-04-03.
- ^ http://sourceforge.net/projects/cyoencode/
- ^ https://www.gnu.org/software/gnulib/
- ^ "MIME-Base32 - kodér a dekodér Base32". MetaCPAN. Citováno 2018-07-29.
- ^ https://commons.apache.org/proper/commons-codec/apidocs/org/apache/commons/codec/binary/Base32.html
- ^ https://www.npmjs.com/package/base32
- ^ https://docs.python.org/3/library/base64.html
- ^ https://golang.org/pkg/encoding/base32
- ^ https://rubygems.org/gems/base32