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等の変種は別アルファベットで、検出しません。