> qr-optimized | efficient | modern <
// Base45-kodning optimerad för QR-koder och digitala certifikat
Effektivt för QR-koder
Bygger på tecken som stöds av QR-kodens alfanumeriska läge och gör det möjligt att lagra mer data i samma kodstorlek.
RFC 9285-kompatibel
Följer den officiella Base45-specifikationen som används i EU:s digitala covidintyg och andra digitala hälsocertifikat.
Platsbesparande
Mer effektivt än Base32 när data ska in i en QR-kod, vilket kan minska antal moduler och göra koden lättare att skanna.
>> teknisk info
Hur Base45 fungerar:
Base45 använder 45 tecken som är anpassade till QR-kodens alfanumeriska läge. Data kodas i grupper om 2 byte till 3 Base45-tecken, vilket ger bättre effektivitet i QR-koder jämfört med Base64.
Exempel:
"Hello" → %69 VD92EX0
Varför använda Base45:
- >Högre datatäthet i QR-koder
- >Kompatibelt med EU:s digitala certifikatstandard
- >Mer effektivt än Base64 när data lagras i QR-koder
- >Mindre och mindre komplexa QR-koder
- >Robustare skanning på olika kameror och läsare
>> vanliga frågor
Vad är Base45-kodning?
Base45 är ett kodningsschema som definieras i RFC 9285 och använder 45 tecken som fungerar bra med QR-kodens alfanumeriska läge för att öka datatätheten.
Varför skapades Base45?
Base45 utvecklades för att lagra mer information i QR-koder, särskilt för digitala hälsocertifikat som EU:s digitala covidintyg, där varje modul i koden är viktig.
Hur skiljer sig Base45 från andra kodningar?
Base45 använder precis de tecken som stöds i QR-kodens alfanumeriska läge och kan därför rymma ungefär 20–30 % mer data än Base64 i samma QR-kodstorlek.
Var används Base45 i praktiken?
Base45 används främst i digitala hälsocertifikat, EU:s digitala covidintyg och andra lösningar där data måste packas mycket tätt i en QR-kod.
// Snabbreferens
| Indata | Base45 |
|---|---|
| AB | BB8 |
| Hello!! | %69 VD92EX0 |
| base-45 | UJCLQE7W581 |
| ietf! | QED8WEX0 |
// Kodexempel
Alphabet 0-9 A-Z space $ % * + - . / : (45 characters) Length 2 bytes -> 3 chars, 1 byte -> 2 chars Python pip install base45 base45.b45encode(b"AB") # b'BB8' Node.js npm i base45-js // RFC 9285 EU DCC JSON -> CBOR -> COSE -> zlib -> Base45 -> "HC1:" -> QR
>> Fler frågor
F: Vilka 45 tecken använder Base45?
S: Exakt de som finns i QR-kodens alfanumeriska läge: 0–9, A–Z (endast versaler), mellanslag och $ % * + - . / :. Alfabetet fastställs i RFC 9285.
F: Hur lång blir en Base45-sträng jämfört med originalbytena?
S: Varje 2 indatabytes ger 3 tecken, en ensam kvarvarande byte ger 2 tecken. För n bytes blir det 3·⌊n/2⌋ + 2·(n mod 2) tecken, ungefär 150 % av indatans längd.
F: Varför är Base45 bättre än Base64 för QR-koder?
S: QR-kodens alfanumeriska läge använder cirka 5,5 bitar per tecken, bytesläget (som Base64:s + och / kräver) 8 bitar. Därför ryms mer data i samma kod. EU:s covidintyg följer CBOR → COSE → zlib → Base45 → prefix HC1: → QR.