0

デコード結果

Base45
Base45/Zlib/COSE/CBOR

エンコード結果

Base45

Base45/Zlib/COSE/CBORについて

Base45/Zlib/COSE/CBORは、CBOR形式で表されたデータをCOSE形式で署名したのち、Zlib形式で圧縮し、Base45形式に変換したものです。

EUDCC (EU Digital COVID Certificate) のQRコードのデータ形式として使用されています。EUDCCはEUにおけるCOVID-19のワクチン接種証明書の共通フォーマットであり、DGC (EU Digital Green Certificate) や Green Pass とも呼ばれています。

DenCodeではデコードのみに対応しており、デコードした結果はJSON形式で表しています。署名の有効性は検証していません。

Base45について

Base45は、7ビットの印字可能なASCII文字を使用した符号化方式です。

Base45では、データを2バイトずつに分割し、それらを3文字のASCII文字に変換して表します。

Base45で使用されるASCII文字は以下のとおりです。2バイトの値をビッグエンディアンの符号なし整数として扱い、それを45進法の各桁(3桁)を計算したうえで、以下のASCII文字をもとにBase45の変換結果を求めます。

45進法の桁Base45 ASCII文字
00
11
22
33
44
55
66
77
88
99
10A
11B
12C
13D
14E
15F
16G
17H
18I
19J
20K
21L
22M
23N
24O
25P
26Q
27R
28S
29T
30U
31V
32W
33X
34Y
35Z
36 [SP]
37$
38%
39*
40+
41-
42.
43/

例えば、「Hello」をBase45で変換すると以下のようになります。

1. 2バイトごとに区切る。

4865(16) 6C6C(16) 6F(16)  (He ll o)

2. 2バイトごとにビッグエンディアンの符号なし整数として扱い、その値を45進法の各3桁に変換する。末尾が1バイトだった場合は45進法の2桁に変換する。

4865(16)
= 18533(10)
= 9 * 452 + 6 * 45 + 38
6C6C(16)
= 27756(10)
= 13 * 452 + 31 * 45 + 36
6F(16)
= 111(10)
= 2 * 45 + 21

3. 45進法の各3桁を逆順でASCII文字に変換する。

45進法の桁3869363113212
Base45 ASCII文字%69 [SP]VDL2

4. 文字を全て繋げてBase45の変換結果とする。

%69 VDL2