base32のシークレットをデコードする

TOTPのセットアップキーやDNS安全トークンはA〜Z2〜7で届きます。base32デコードで中身のバイトを見て、エンコードで往復確認します。

このガイドで使う道具

やりたいこと

Base32は密度を犠牲に堅牢性を得ます — 0/Oや1/lの混同がなく、DNSや紙に安全です。JBSWY3DPK5XXE3DEのような2FAキーやライセンストークンをデコードして中身を見たり、往復確認します。

テキスト↔base32

どちら側を貼っても構いません。エンコードはUTF-8テキストを標準アルファベットへ(=パディング任意)、デコードは小文字を受け入れ空白とパディングを無視します。

具体例

HelloはJBSWY3DPにエンコードされます(パディング任意)。小文字で空白入りのjbsw y3dpをデコードしてもHelloに戻ります。JBSWY3DZも合法な文字列でHellyにデコードされます — base32はアルファベットを検査しますが意味は見ません。

対応範囲

UTF-8テキストのRFC 4648 base32、双方向200,000文字まで。デコード結果の不正UTF-8は文字化けさせず報告します。Base32hexやCrockford等の変種は別アルファベットで、検出しません。