Base85エンコーダー・デコーダー
Base85は4バイトを5つのASCII文字に詰め込みます。64文字ではなく85文字の文字集合を使うため、Base64の「3バイトを4文字」という比率より高密度です。このツールは、PostScriptやPDFファイルの中で使われているAdobe Ascii85形式を実装しています。エンコーダーは出力を常に<~と~>の区切り記号で囲み、デコーダーは区切り記号の有無を問わず入力を受け付けます。
Base85(Ascii85)を変換する方法
-
1
エンコードかデコードを選ぶ
エンコードは生のバイト列をAscii85に変換し、デコードはAscii85の文字列をバイト列に戻します。
-
2
テキストを貼り付ける
エンコードしたいバイト列、またはデコードしたいAscii85文字列を入力欄に貼り付けます。
-
3
エンコーダーが4バイトごとに分割
4バイトの各ブロックが5文字のBase85文字列になります。最後のブロックは詰め物を加えてから末尾を切り詰めます。
-
4
結果をコピー
Ascii85の出力は`<~`と`~>`の区切り記号で囲まれます。もう一度貼り付ければデコードできます。区切り記号は自動的に取り除かれます。
サイズ増加率の比較
| 符号化方式 | 4バイトあたりの文字数 | バイナリと比べた増加率 |
|---|---|---|
| Hex | 8 | +100% |
| Base64 | 5.33(詰め物込みで8に切り上げ) | +37% |
| Base85 | 5 | +25% |
| 生バイナリ | 4 | 0 |
つまり1 MBのバイナリは、Base85では1.25 MB、Base64では1.33 MB、hexでは2 MBになります。
Ascii85の文字集合
Ascii85(Adobe): ASCIIの!からuまで(33〜117)の文字に加え、4つのゼロバイトを表す短縮記号としてzを使います。PostScriptとPDFのストリームで標準的に使われ、<~...~>で囲まれます。
Z85(ZeroMQ)とRFC 1924のIPv6用文字集合は、同じ85文字の考え方を別の形で割り当てたものです。このツールはこれらの形式に対応していないため、それらの形式でエンコードされた文字列をここでデコードすると結果がおかしくなります。
計算の仕組み
4バイトごとに、ビッグエンディアンの32ビット整数Nとして読み取ります。出力される5文字は、Nを85進数で表したときの各桁で、上位の桁から並びます。85^5 = 4 437 053 125は2^32より大きいため、4バイトは必ず5文字に収まります。
Ascii85が役立つ場面
PDFをテキストエディターで開き、ASCII85Decodeを検索してみてください。Adobeは、7ビット伝送(古いファクス風のシステム)を通り抜ける必要がある埋め込み画像やフォントのフィルターとして、これを使っています。同じエンコード方式は多くのPostScriptファイルや、メールで安全に送れるバイナリ転送でも使われます。
特殊なケース
- すべてゼロの4バイトブロック: Ascii85では
!!!!!ではなく1文字のzにエンコードします。 - 末尾の半端なブロック: ゼロバイトで埋めてから、対応する数の出力文字を末尾で切り詰めます。
よくある質問
出力が小さいという意味では、はい。どこでも使えるという意味では、いいえ。Ascii85には<、>、&、"のように、XML、JSON、URLでエスケープが必要な文字が含まれます。ほとんどのツールは標準でBase64に対応しています。
PostScriptとPDFのストリームの中です。エンコードされた領域は<~と~>で囲まれます。PDFビューアーやエディターはこのエンコード方式を自動的に処理します。
いいえ。Adobe Ascii85のみに対応しています。Z85(ZeroMQ)とRFC 1924のIPv6用文字集合は85文字の割り当てが異なるため、それらの形式でエンコードされた文字列はここでは正しくデコードできません。
Ascii85の慣例に従ってエンコード領域を表すためです。エンコーダーは常にこれらを追加し、デコーダーは付いていれば自動的に取り除きます。区切り記号なしの文字列を貼り付けることもできます。
関連ツール
Atbash暗号エンコーダー
A-ZをZ-Aに対応させるヘブライ系の換字式暗号、Atbashでテキストをエンコードまたはデコードできます。同じ操作で暗号化と復号ができます。
Base64ファイルエンコーダー
あらゆるファイル(PDF、ZIP、画像、実行ファイル)をBase64テキストにエンコードし、JSON、メール、YAML、data URIへ埋め込めます。ブラウザ内でローカルに動作し、アップロードはありません。
Base58エンコーダー・デコーダー
UTF-8テキストや16進バイト列をエンコードし、Bitcoin、Ripple、Flickrの各アルファベットでBase58を安全にデコードします。
AES暗号化 / 復号
OpenSSLのAES暗号方式で低リスクのテキストを暗号化・復号します。パスフレーズはSHA-256でハッシュされ、Base64出力はIVと暗号文です。
bcryptジェネレーター
平文パスワードからbcrypt hashを生成します。cost factorは4から13まで調整でき、Laravel、Django、Node、PHPと互換性があります。
チェックサム検証
任意のテキストの MD5、SHA-1、SHA-256、SHA-384、SHA-512、CRC32 チェックサムを計算し、期待値と比較して一致・不一致を明確に判定します。
このツールは他の言語でも利用できます
- Base85 Kodlayıcı ve Çözücü [TR]
- Codificador y Decodificador Base85 [ES]
- مشفر ومفكك Base85 [AR]
- Encodeur et décodeur Base85 [FR]
- Base85 encoder en decoder [NL]
- Base85 인코더 및 디코더 [KO]
- Encoder dan Decoder Base85 [ID]
- Base85 Encoder and Decoder [EN]
- Bộ mã hóa và giải mã Base85 [VI]
- Base85 编码器和解码器 [ZH]
- ตัวเข้ารหัสและถอดรหัส Base85 [TH]
- Codificador e Decodificador Base85 [PT]
- Base85-Encoder/Decoder [DE]
- Base85-kodare och avkodare [SV]
- Koder i dekoder Base85 [PL]
- Кодировщик и декодировщик Base85 [RU]
- Codificatore e Decodificatore Base85 [IT]