はじめに
2025年現在でのおすすめの zip ファイル形式の圧縮・展開(解凍)ソフトについてまとめました。本記事はファイル名を文字化けせずにやり取りできるかを重視しており、使い勝手や対応形式の多さや機能については評価の対象にしていません(__MACOSX
などは無視すりゃいいだけなので大した問題ではありません)。未だに Shift JIS にしか対応していない古いソフトウェアは非推奨としています。今どき Shift JIS を使う必要はありませんし、Shift JIS では一部の漢字や絵文字などを扱えず、Windows と macOS で対応している Shift JIS の種類に違いがあるため文字化けを避けることができないからです。
🚩 おすすめ圧縮展開ソフト だけを知りたいという方はコチラ
現在では
▶ zip ファイルの中のファイル名に使う文字コードは Unicode (UTF-8) で構いません
なぜなら OS 標準の zip 機能は(Windows 7 以降の)
▷ Windows も macOS も両方とも UTF-8 ファイル名の展開に対応しいる
からです。ただし(一部の文字を除いて)
▶ zip ファイルの中のファイル名に Shift JIS を使っても構いません
なぜなら
▷ Windows も macOS も両方とも Shift JIS ファイル名の展開に対応している
からです。
注意点として、Windows 10 以前と macOS の標準の zip 機能は、以下で示すように UTF-8 対応が不十分なので、Windows と macOS 間でやりとりするときに OS 標準の zip 機能を使用するのはおすすめしません。
- Windows 10 以前: ファイル名を Shift JIS で格納する(UTF-8 は展開のみ対応)
- Windows 11: ファイル名を UTF-8 で格納し UTF-8 フラグを立てる(完璧! 👍️)
- macOS 15: ファイル名を UTF-8 で格納するが UTF-8 フラグに非対応(ダメ 👎️)
OS 標準の zip 機能が使えない場合に、どのソフトウェアを使うべきかをまとめたのがこの記事です。とはいうものの、文字化けの仕組みを理解しなければどのソフトウェアを使うべきか判断できないので、文字化けの理屈をきっちりと解説しています。この記事は、巷にあふれる適当な解説記事の間違いを正し、文字化けが発生するメカニズムを解説し、Windows ⇔ macOS 間の文字化け問題のトライ&エラーをなくすことを目的にしています。なぜか文字化けする、文字化けの原因も直し方もわからない、いろんなソフトを試してみてやっとうまく行った・・・のか?という時代からはおさらばしましょう。
長い本文を読みたくない人向けに結論を書いておくと、文字化けの問題は Mac ユーザーが maOS 標準の zip 機能を使うのをやめ、Keka をインストールして使えばおそらく全て解決します。なんで Windows ユーザーのために Mac ユーザーが手間を掛けなければいけないんだと思うかもしれませんが、文字化けの原因はほとんど macOS 側にあるので、Mac ユーザーが手間を掛けるのが筋です。文句は Apple に言ってください。Keka は AppStore からだと有料ですが公式サイトからダウンロードすれば無料で使えるようです。
圧縮・展開ソフトの数が多く検証も面倒なので間違いが含まれている可能性があります。もし間違いを見つけたら教えていただけると助かります。zip ファイルの内部構造の調査には zipdetails
コマンドを使うと便利です。
前提知識
zip ファイルの文字化けの話で頻繁に出てくる Unicode と Shift JIS について簡単に解説します。
Unicode について
Unicode とは世界中の文字を扱える文字コードで、最新の Unicode 16.0.0 ではおよそ 15万5千種類の文字を扱えます。UTF-8 や UTF-16 は Unicode をどのような形式で表現するかの違いです。UTF-8 と UTF-16 は表現方法が異なるだけで扱える文字に違いはなく、UTF-8 と UTF-16 の表現形式は簡単に相互変換ができます。
Windows と macOS の標準の文字コードは両方とも Unicode です。Windows は 30 年以上前から Unicode です。一般ユーザーに限ったとしても 20 年以上前の XP はすでに Unicode です。macOS の誕生は XP と同じ頃なので Mac ユーザーと同じ頃から Windows ユーザーは Unicode を使用しています。ファイルシステムは、Windows の NTFS は UTF-16 で、macOS の APFS は UTF-8(少し前の HFS+ では UTF-16)と違いがありますが、本記事の内容としては重要な違いではありません。いずれにしろ zip ファイルの中に格納するファイルの文字コードは Unicode の場合は UTF-8 を使うと決まっているからです。
Shift JIS について
本記事ではわかりやすく Shift JIS と書いていますが、Shift JIS は日本専用の文字コードで、日本以外では使われていません。Shift JIS(またはその国独自の文字コード)は古い文字コードという扱いで、Windows はすでに Unicode に完全移行しています。Shift JIS を使っているユーザーのために Shift JIS にも対応していますが、Windows 自体は Shift JIS に依存しておらず、Shift JIS を使っているのは Windows ではなくユーザーです。
Shift JIS はなにも Windows だけのものではありません。macOS も Shift JIS に対応しています。例えば macOS 標準アプリの「テキストエディット」は Shift JIS のファイルを開けます(「オプションを表示」をクリック)。しかも Windows 向け (CP932) と Mac 向け (MacJapanese) とどちらでもない(最低限の?)Shift JIS に対応しています。
■ macOS のテキストエディットは Shift JIS 対応
(Mac OS = MacJapanese、Windows, DOS = CP932)
zip ファイルに関しても、macOS は Shift JIS に対応しています。ただし Windows 拡張版の CP932 ではなく、Mac 拡張版の MacJapaneseです。つまり古い Mac で作成した zip ファイルを展開できるようになっています。zip ファイルの中のファイル名の文字コードは国によって様々な文字コードが使われてきました。様々な文字コードが使われる状況では文字化けしやすいのは当然です。現在では Windows も macOS も Unicode を使っているわけで、あなたに Shift JIS を使う理由がないのであれば、zip ファイルの中のファイル名にも Unicode (UTF-8) を使いましょう。
「Windows は Shift JIS を使うから文字化けする」はウソ
zip ファイルのファイル名が文字化けする原因として、使用している文字コードの違いであり macOS は UTF-8 で、Windows は Shift JIS だからという説が流れていますが、これは Windows や文字コードなどに詳しくない人のよくある間違いです。Windows 自体は Unicode (UTF-16) を使っており、Shift JIS を使う可能性があるのは zip ファイルですが、Windows の話と zip ファイルの話は、別の話です。
zip ファイルの中のファイル名が 適切な UTF-8 ファイル名 の場合、Windows と macOS は両方とも文字化けせずに展開できます。なぜなら Windows と macOS は両方とも UTF-8 ファイル名に対応しているからです。
zip ファイルの中のファイル名が Shift JIS ファイル名の場合、Windows と macOS は、ほとんどの文字を文字化けせずに展開できます。なぜなら(日本語設定の)Windows と macOS は両方とも Shift JIS ファイル名に対応しているからです。
Windows と macOS は両方とも UTF-8 と Shift JIS に対応しています。それなのになぜ文字化けが発生するのでしょうか? 文字化けが発生する本当の原因は次の 2 点です。
- macOS 標準の zip 機能が 適切な UTF-8 ファイル名で作成しないから(macOS の問題)
- Windows と macOS で対応している Shift JIS の種類が異なり一部の文字が違うから
つまり、Windows は Shift JIS を使うのではなく、macOS で作成した zip ファイルは、文字コードに UTF-8 を使っていると明記されていないから、Windows は OS の設定に従って Shift JIS と判断するしかないということです。
例えば日本で皆が日本語を使っている中で、国籍を明かさない人に「なんで国際共通語(英語?)を使わないんだ!」といきなり言われたら、たとえ10ヵ国語を話せる人でも困りますよね? マルチリンガルな人 (Windows) に、国際共通語 (Unicode) を使って欲しいなら、まず自分が国際共通語を使えると言いましょうという話です。最近はもうみんな Unicode を使うようになったと言っても、昔の zip ファイルは Shift JIS を使っているわけで、文字コードを指定しない場合のデフォルトを今すぐ変更するわけにはいきません。Windows がデフォルトを変更できるのは Shift JIS を使うユーザーがいなくなった後です。だからこの記事では Shift JIS にしか対応していない古いソフトウェアを非推奨にして使うのをやめましょうと書いているわけです。
文字化けからサヨナラするための基礎知識
zip ファイルのファイル名の文字化けを避けるには、圧縮展開ツールが次の機能に対応しているかを知る必要があります。
- A. Unicode ファイル名に対応しているか?
- B. Unicode ファイル名の正規化機能を持っているか?
- C. Shift JIS に対応しているか?
Unicode ファイル名に対応しているか?
Shift JIS では文字化けを完全に避けることは不可能なので Unicode を使う必要があります。Unicode ファイル名への対応には、次の 3 つの考慮事項があります。
- UTF-8 ファイル名で格納しているか?
- UTF-8 フラグに対応しているか?
- Unicode パス拡張フィールドに対応しているか?
1 は中途半端な対応で、zip ファイルに格納するファイル名の文字コードに UTF-8 を使用しますが、UTF-8 を使用しているという情報を記録しません。ファイル名自体は(たまたま)UTF-8 で格納されているというだけで、どの文字コードを使用しているかという情報がなく、文字コードを推測するしかないため文字化けを起こす可能性があります。この方法は macOS が使用しており、macOS で作成した zip ファイルが Windows で文字化けする原因となっています。
2 はファイル名を UTF-8 で格納したうえで、UTF-8 フラグ(general purpose bit flag の 11 ビット目)を設定する方法で、つまり 1 に加え UTF-8 フラグを設定するということです。これは ISO/IEC の zip の標準規格 (ISO/IEC 21320–1:2015) で標準化されている推奨される方法です。UTF-8 フラグが設定されていればファイル名の文字コードが UTF-8 です。UTF-8 フラグへは Windows 7(パッチが必要)以降で対応しているため展開時に文字化けしません。macOS は UTF-8 フラグに対応していないようですが、zip ファイルのファイル名の文字コードを UTF-8 と判断できる限り文字化けしません。
3 は Unicode ファイル名に対応するもう一つの方法で、Unicode パス拡張フィールド (Info-ZIP Unicode Path Extra Field) に Unicode パスを格納する方法です。つまり通常の Shift JIS のパスに加えて Unicode のパスを格納します。展開側が Shift JIS にしか対応していない場合でも、Unicode にしか対応していない場合でも、どちらでも文字化けしないというメリットがありますが、文字化けを避けるには Shift JIS で扱える範囲の文字しか使えません(通常は Shift JIS と Unicode で同じファイル名にするため)。互換性は高い反面、完全な Unicode 対応ができない方法です。
まとめると、Unicode ファイル名への対応方法は次の 2 つです。通常は前者の方法を使います。後者では全ての Unicode 文字に対応できません。
- ファイル名を UTF-8 にし、UTF-8 フラグを設定する(通常の方法)
- ファイル名を Shift JIS のままにし、追加で Unicode パスを持たせる(互換向け)
Unicode ファイル名の正規化機能を持っているか?
これは見た目には文字化けしているように見えないので厳密には文字化けの話ではありません。文字化けしていない(ようにみえる)のに何故かファイルを参照できないという問題の話です。
Unicode では、例えば「ガ」を 1 文字で表現するか、「カ」と「゛」の 2 文字で表現するか、2 つの表現方法があります。(フォントによりますが)「ガ」と「カ゛」の 2 つは見た目に違いがわかりません。一部のソフトウェアは zip ファイルに圧縮または展開するときに、「ガ」に統一するか「カ゛」に統一するか機能を持っていることがあります。 前者を NFC 正規化といい、後者を NFD 正規化と言います。
Windows や Linux や その他の多くの OS では正規化を行わないので、入力したままの文字(一般的には「ガ」)が使われます。しかし困ったことに macOS では一般的にファイル名は NFD に正規化され、標準の zip 機能も NFD で正規されたファイル名で格納します。macOS ではファイル名が正規化されていてもされていなくても同じように参照できるようになっているので困らないのですが、そのような OS は他にはなく、ファイルの参照で問題が発生する場合があります。
これはファイル名の食い違いの問題で、文字としては NFC と NFD のどちらが正しいというわけではないのですが、macOS の問題は入力した時の文字とは違う文字にファイル名を変更することです。どちらも文字としては正しいので正規化を行わないソフトが一般的ですが、macOS の特殊な仕様に対応しているソフトでは、NFC に正規化する機能を持っています。もし圧縮ソフト自体に対応していない場合、別のソフトウェアを使って変換できます。詳細はこの記事の「ファイル名の NFC ⇔ NFD 変換ツール」を参照してください
Shift JIS ファイル名に対応しているか?
新しく作成する zip ファイルに Shift JIS を使う理由はありませんが、古い zip ファイルで Shift JIS が使われている場合があります。また相手が Windows 10 以前で圧縮したり、Unicode に対応していない古い圧縮ソフトを使っている場合もあるでしょう。そういう場合に Shift JIS にも対応していることは文字化けを起こさないために重要です。
Shift JIS は Windows と macOS で違いがあります。Windows の Shift JIS は正式には CP932 という名前で、macOS の Shift JIS は MacJapanese という名前です。Windows と macOS はどちらも標準の zip 機能は Shift JIS のファイル名に対応しているのですが、対応している Shift JIS の種類に違いがあるため、Windows で作成した zip ファイルの中のファイル名の ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ という文字が、macOS で展開すると ㈰ ㈪ ㈫ ㈬ ㈭ ㈮ ㈯ ㉀ ㈷ ㉂ ㈹ に文字化けすることがあります。そういう問題があるため Unicode を使いましょうということになるわけです。
おすすめ圧縮展開ソフト
「ファイル名」の列にある [OSS] は、オープンソースという意味です。「UTF-8 圧縮」と「UTF-8 展開」の列はそれぞれ Unicode ファイル名に対応しているかを示しています。
- ✅️ ・・・ UTF-8 ファイル名で格納(UTF-8 フラグ 対応)
- ☑️ ・・・ Shift JIS で表現できないものだけ UTF-8 ファイル名で格納(UTF-8 フラグ 対応)
- ⚠️ ・・・ UTF-8 ファイル名で格納(UTF-8 フラグ 非対応)
「Shift JISファイル名」の列は、Windows (CP932) に対応している場合は 🅆️、macOS (MacJapanese) に対応している場合は 🄼 と書いています。両方に対している場合は、展開時にどちらで解釈するかを選択できます。取り消し線のソフトウェアは非推奨です(私の主観)。Unicode (UTF-8) に対応していないものは非推奨として扱います。
macOS 用
注意: Unicode 正規化は圧縮時の話です。
ソフト名 | UTF-8 圧縮 |
UTF-8 展開 |
Unicode パス 拡張フィールド |
Unicode 正規化 圧縮 |
Shift JIS ファイル名 |
---|---|---|---|---|---|
macOS 15 | ⚠️ | ⚠️ | 参照のみ | NFD 固定 | 展開のみ 🄼 |
Keka 1.2.54 [OSS?] | ✅️ | ✅️ | 参照のみ | NFC 固定 | 展開のみ 🅆️ 🄼 |
The Unarchiver 4.3.9 | – | ✅️ | 参照のみ | – | 展開のみ 🅆️ 🄼 |
PeaZip 10.5.0 [OSS] | ✅️ | ✅️ | 参照のみ | なし | 非対応 |
ソフト名(以下は非推奨) | UTF-8 圧縮 |
UTF-8 展開 |
Unicode パス 拡張フィールド |
Unicode 正規化 圧縮 |
Shift JIS ファイル名 |
❌️ |
❌️ | – | 非対応 | – | 対応 🅆️ |
❌️ |
❌️ | ❓️ | 非対応 | – | 対応 🅆️ |
❌️ |
❌️ | ❌️ | 非対応 | – | 対応 🅆️ |
補足
- PeaZip は文字コードの指定ができるが、macOS 版は機能しない?
- MacWinZipper (WinArchiver) は無料版での検証。展開機能は有料版のみなので検証していない
- ZIPANG は AppStore 版は削除。FULL 版は「プライバシーとセキュリティ」から実行許可が必要
macOS 用まとめ
macOS 標準機能は UTF-8 フラグに対応していない、必ず NFD 正規化が行われる、Shift JIS の展開は MacJapanese にしか対応していない、という点から Windows とのやり取りに適していません。Windows とのやり取りには Keka が適しています。展開のみが必要であれば The Unarchiver でも良いでしょう。
もしどうしてもファイル名の文字コードに Shift JIS を使った zip ファイルを作成したい場合は、DTP Zipper、MacWinZipper、ZIPANG を使うことになりますが、Windows 側はすでに UTF-8 ファイル名に対応しているため通常は必要にならないはずです。相手(Windows 側)が Shift JIS にしか対応していない Lhaplus などを使っており、変更してもらえない場合の最終手段です。ちなみに Shift JIS には正規化という概念がなく、ファイル名に Shift JIS を使った場合は NFC 正規化相当の処理が行われますが、ZIPANG では一旦 NFKD 正規化が行われているようで、例えば「㍉」が「ミリ」に変換されます。DTP Zipper では「㍉」は扱えない可能性があるとしてエラーになります。したがって MacWinZipper の方が良さそうです。
Windows 用
注意: Unicode 正規化は展開時の話です。追加の「macOS 標準 zip」は macOS 標準の zip 機能で作成したファイルを文字化けせずに展開できるかです。
ソフト名 | UTF-8 圧縮 |
UTF-8 展開 |
Unicode パス 拡張フィールド |
Unicode 正規化 展開 |
Shift JIS ファイル名 |
macOS 標準 zip |
---|---|---|---|---|---|---|
Windows 7 + パッチ | ❌️ | ✅️ | 参照のみ | なし | 対応 🅆️ | ❌️ |
Windows 8 / 8.1 | ❌️ | ✅️ | 参照のみ | なし | 対応 🅆️ | ❌️ |
Windows 10 22H2 | ⚠️ | ✅️ | 参照のみ | なし | 対応 🅆️ | ❌️ |
Windows 11 24H2 | ✅️ | ✅️ | 参照のみ | なし | 展開 🅆️ | ❌️ |
7-Zip 24.09 [OSS] | ✅️ | ✅️ | 格納 参照 | なし | 対応 🅆️ | ✅️ |
PeaZip 10.5.0 [OSS] | ✅️ | ✅️ | 格納 参照 | なし | 対応 🅆️ | ✅️ |
CubeICE 3.5.1 [OSS] | ✅️ | ✅️ | 格納 参照 | NFC 固定 | 対応 🅆️ | ✅️ |
WinRar 7.11 [有料] | ✅️ | ✅️ | 格納 参照 | NFC 固定 | 対応 🅆️ | ✅️ |
WinZip 76.9 [有料] | ✅️ | ✅️ | 格納 参照 | なし | 対応 🅆️ | ✅️ |
Bandizip 7.38 | ✅️ | ✅️ | 格納 参照 | なし | 対応 🅆️ | ✅️ |
Explzh 9.78 [商用有料] | ✅️ | ✅️ | 格納 参照 | NFC 対応 | 対応 🅆️ | ✅️ |
LhaForge 2.0.0 [OSS] | ✅️ | ✅️ | 非対応 | なし | 展開 🅆️ | ❌️ |
lhaz 2.6.1 [有料] | ☑️ | ✅️ | 非対応 | なし | 対応 🅆️ | ❌️ |
lhaz+ 3.6.1 [有料] | ☑️ | ✅️ | 非対応 | なし | 対応 🅆️ | ❌️ |
ソフト名(以下は非推奨) | UTF-8 圧縮 |
UTF-8 展開 |
Unicode パス 拡張フィールド |
Unicode 正規化 展開 |
Shift JIS ファイル名 |
macOS 標準 zip |
❌️ | ❌️ | 非対応 | – | 対応 🅆️ | ❌️ | |
❌️ | ❌️ | 非対応 | – | 対応 🅆️ | ❌️ | |
– | ❌️ | 非対応 | – | 展開 🅆️ | ❌️ | |
– | ❌️ | 非対応 | – | 展開 🅆️ | ❌️ |
補足: 圧縮時にファイル名の文字コードを UTF-8 にする場合
- Windows 10: 「ワールドワイド言語サポートでUnicode UTF-8を使用」をチェック
- Shift JIS を使う古いアプリなどの動作に影響が出る場合があるので注意
- 7zip: 「パラメーター」に
cu=on
を指定する - CubeICE: 「ファイル名を UTF-8 に変換する」をチェック
- Explzh: 「2バイト文字ファイル名を UTF-8 にエンコーディングする」をチェック
補足: Windows 7 のパッチとは KB2704299 のことです。
Windows 用 まとめ
Windows 標準の zip 機能は、正しい UTF-8 ファイル名(UTF-8 フラグが設定、または Unicode パス拡張フィールドの設定)であれば問題なく展開できたのですが、macOS 標準機能で作成した zip ファイルは、正しい UTF-8 ファイル名ではないので文字化けしてしまいます。他のソフトで文字化けしないのは、おそらく別の情報を参照しており、zip ファイルを作成した OS が Unix であれば UTF-8 だろうと推測しているようです。
Windows 11 では zip ファイルの中のファイル名に UTF-8 を使うようになったことに注意してください。Shift JIS ファイル名は格納されないので、Shift JIS ファイル名にしか対応していない古いソフトウェアは、今後文字化けするようになるでしょう。なぜ Windows は 長らく UTF-8 ファイル名での圧縮に対応していなかったかと言うと、おそらく互換性が理由です。UTF-8 ファイル名での展開ができない Windows XP、Vista、パッチなしの 7 が使われている状態で UTF-8 ファイル名で圧縮してしまったら古い Windows で文字化けしてしまいます。さすがに今は非対応の古い Windows はほとんど使われていない(Windows 7 のサポート終了は 2020年1月14日、ESU は 2023 年)はずなので、Windows 11 でようやく解禁したと言ったところでしょう。
展開時にファイル名の Unicode 正規化をして欲しい場合には、CubeICE、Explzh、WinRar が選択肢になります。無料で商用利用したい場合には CubeICE が良いでしょう。macOS で Keka を使って圧縮している場合には圧縮時点で NFC 正規化が行われるため必要ありません。ファイル名の Unicode 正規化は別のツールで行う方法もあります。少し手間ですが、圧縮ソフトに依存せず zip ファイル以外にも対応できるので、選択肢と応用範囲が広がります。
Bandizip には macOS 版もありますが有料で試用もできないため、評価していません。WinZip と WinRar は有料なので、最低限の機能で十分なら選ぶ理由はないでしょう。
Lhaplus、+Lhaca、MacWinZipper、ZIPANG などが非推奨の理由
これらのソフトが非推奨の理由を改めて明記すると、Shift JIS にしか対応していないからです。また後述しますがパスワードに関しても脆弱です。これらのソフトが将来バージョンアップして Unicode 対応に作り変えられたとしたら話は別ですが、メンテナンスもほとんどされていないようで、2025 年現在では使ってはなりません。
古い記事の焼き直しなのか何なのか知りませんが、いつまでも Lhaplus をオススメにあげているのはどうかしています。特に Lhaplus は非推奨であると念を押しておきます。Lhaplus(Shift JIS にしか対応してないソフト)を使っている人だけが文字化けし、その人のためだけに対応しなければならないとしたら、周りの人にとって迷惑です。Lhaplus をオススメしているような記事は読む価値はありません。
Lhaplus からの乗り換えでは 7-Zip をオススメします。使い方がシンプルで Lhaplus でできることはほぼ全てできます。ライセンスやその他の様々な考慮事項の問題がありません。
ファイル名の NFC ⇔ NFD 変換ツール
展開した後でファイル名を正規化したい場合には次のようなツールを使用します。一般的には NFC に正規化(例: 「ガ」)するとよいですが、macOS では NFD に正規化(例: 「カ゛」)されたファイル名を使うのが一般的です。特にファイルシステムに APFS ではなく古い HFS+ を使用している場合、ファイルシステムの機能ですべて NFD に正規化されます。macOS ではファイル名が NFC に正規化されていても NFD に正規化されていても同じように扱えるような仕組みがありますが、Windows や Linux など他の OS にはそのような仕組みはありません。
GUI 用
GUI から NFC ⇔ NFD 変換を行いたい場合、次の BandiNamer が利用できます。Windows 版と macOS 版の両方が提供されています。使い方は直感的なので迷うことはないでしょう。
CLI 用
CLI コマンドに慣れている人は convmv
コマンドを使うとよいでしょう。標準的なパッケージ管理システムからインストールできるはずです。カレントディレクトリ以下のすべてのファイルを NFC に正規化する場合は次のようにします。
実行するとどう変換されるか確認する
$ convmv -r -f utf8 -t utf8 --nfc .
実際に変換する
$ convmv -r -f utf8 -t utf8 --nfc --notest .
本来はファイル名の文字コードを変換するためのツールであるためか、NFC ⇔ NFD だけを行う場合でも utf-8 を 2 回指定しなければならないのが面倒なところです。詳細はドキュメントを参照してください。
おまけ: zip ファイルのパスワードについて
本記事のテーマは文字化けですが、より安全な zip ファイルの使い方を広めるためにおまけでパスワードについて解説します。
zip ファイルのパスワードには、暗号方式として「古くて脆弱で使ってはならない ZipCrypto 方式」と「AES 方式」を使う 2 つの方法があります。ZipCrypto は使ってはならないものなので、使ってはいけませんが、古いソフトウェアは ZipCrypto にしか対応していない場合があります。そのようなソフトウェアではパスワード機能を使ってはいけません。AES にはビットが違うものがいくつから大きいほうがより安全ですが、AES-256bit が一般的です。
- ZipCrypto(別名: Zip 2.0 互換、Legacy encryption、ZIP レガシー暗号化 など)
- AES (128bit / 192bi / 256bit)
macOS の標準機能でパスワードを設定する方法として zipcloak
コマンドや zip
コマンドの -e
オプションが紹介されることがありますが、zipcloak
も zip -e
も ZipCrypto 方式なので使ってはいけません。なお古い macOS は ZipCrypto にしか対応しておらず、Windows も ZipCrypto の展開にしか対応していません。したがってパスワード付き zip ファイルを扱う場合には AES に対応したソフトウェアを使う必要があるでしょう。
パスワード対応ソフトの比較
パスワードに対応している各ソフトが、どの暗号方式に対応しているかの比較です。ここでは(OS 標準機能以外の)zip ファイル作成時に AES が使えないソフトウェアを非推奨にしています。
☑️ 展開のみ対応
MacOS 用
ソフト名 | ZipCrypto | AES-128bit | AES-192bit | AES-256bit |
---|---|---|---|---|
macOS 15 | ☑️ | ☑️ | ☑️ | ☑️ |
Keka | ✅️ | ☑️ | ☑️ | ✅️ |
The Unarchiver | ✅️ | ☑️ | ☑️ | ✅️ |
PeaZip | ✅️ | ☑️ | ☑️ | ✅️ |
ソフト名(以下は非推奨) | ZipCrypto | AES-128bit | AES-192bit | AES-256bit |
✅️ | ❌️ | ❌️ | ❌️ | |
✅️ | ❌️ | ❌️ | ❌️ |
Windows 用
ソフト名 | ZipCrypto | AES-128bit | AES-192bit | AES-256bit |
---|---|---|---|---|
Windows 11 | ☑️ | ❌️ | ❌️ | ❌️ |
7-Zip | ✅️ | ☑️ | ☑️ | ✅️ |
PeaZip | ✅️ | ☑️ | ☑️ | ✅️ |
CubeICE | ✅️ | ✅️ | ✅️ | ✅️ |
WinRar | ✅️ | ☑️ | ☑️ | ✅️ |
WinZip | ☑️ | ☑️ | ☑️ | ✅️ |
WinZip Pro | ✅️ | ✅️ | ☑️ | ✅️ |
Bandizip | ✅️ | ☑️ | ☑️ | ✅️ |
Explzh | ✅️ | ✅️ | ☑️ | ✅️ |
LhaForge | ☑️ | ☑️ | ☑️ | ✅️ |
ソフト名(以下は非推奨) | ZipCrypto | AES-128bit | AES-192bit | AES-256bit |
✅️ | ☑️ | ☑️ | ☑️ | |
✅️ | ☑️ | ☑️ | ☑️ | |
✅️ | ❌️ | ❌️ | ❌️ | |
☑️ | ❌️ | ❌️ | ❌️ | |
☑️ | ❌️ | ❌️ | ❌️ |
安全なパスワードの長さは15桁以上?
補足として安全なパスワードの長さですが、脆弱な ZipCrypto ではどれだけパスワードを長くしても安全ではありません。内閣サイバーセキュリティセンター (NISC) では以前は 15 桁以上を推奨していた(参考)ようですが、最新版では推奨の桁数が削除されているようです。つまりコンピュータ性能の向上や効率的な攻撃手段の発見などで 15 桁なら安全と保証できなくなったのでしょう。
AES を使っていれば、十分な長さがあれば(今のところは)安全だと思いますが、4 桁のパスワードなど言語道断でパスワードを設定していないのと同じです。8文字以下は危険と考えたほうが良いでしょう。何文字以上なら安全と断言することはできませんが、NISC が(以前に)言っていたということを理由に、AES で数字や記号を織り交ぜて 15 桁以上にするのが良いのではないでしょうか? ファミコン版ドラゴンクエスト2 のパスワード(ふっかつのじゅもん)の最大が 52 文字なので大した長さではありませんね?
パスワードのかかった zip の中身を不正に見る方法
zip ファイルのパスワードを解析するツールはいくつもあります。有名なのは John the Ripper と Hashcat でしょうか。どちらも無料で使えます。コマンドラインから使うので使い方は少々難しいですが、GPGPU による並列処理を行うことで、高速にパスワードを見つけ出すことができます。
有料を含めると初心者でも簡単にパスワードを解析できるツールはいくつもあります。Google で検索すると簡単に見つけられます。
これらを使えば、6 文字程度のパスワードは数時間程度以内で見つけ出せます。4 文字なんて一瞬です。数年後にはさらに短い時間で見つけられるようになるでしょう。zip ファイルのパスワードを見つけるのは、専門家じゃなくても誰でも簡単にできます。みんなじゃんじゃんトライして遊んでみましょう!
さいごに
zip ファイルは元々 Unicode (UTF-8) が誕生する前から使われており、ファイル名に使用する文字コードにはさまざまなものが使われていたため、文字化け問題は避けられないものでした。現在では Unicode (UTF-8) に統一することで、文字化け問題を避けられるようになっていますが、OS 標準の zip 機能で Unicode (UTF-8) に十分対応できていると言えるのは今のところ Windows 11 だけです。それでも正しい UTF-8 ファイル名でなければ展開できませんし、macOS の NFD 問題に注意が必要です。
この記事では zip ファイルのみに焦点をあてていましたが、Windows と macOS の両方でその他の形式にも対応してきているので、zip ファイルにこだわる必要はないかもしれません。例えば 7-Zip などが対応している 7z 形式は最初から Unicode を使う仕様となっています。文字化け問題は少なくなるとは思いますが、それでも macOS の NFD 問題が残っています。
macOS の NFD 問題は本当に厄介で、これを楽に解決しようとすると、macOS で zip ファイルを作成するときには、macOS 標準の zip 機能は使わずに Keka を使いましょうというのが、現時点で最も良い方法に思えます。macOS 側で Keka を使っていれば Windows 側は何を使っても構いません。ただし非推奨の Shift JIS にしか対応していないものは除きます。
一つこれから起こるであろうことを予言しておくと、未だに Lhaplus、+Lhaca、Lhasa などの Windows 用の古いソフトを使っている人は、Windows 11 の普及と共に文字化けするようになるでしょう。皆が望んだ Shift JIS 切り捨ての始まりです(ヒント: 本記事でおすすめしているソフトの多くは lzh ファイルの圧縮展開に対応しています)。というか、いい加減 Shift JIS 使うのやめましょうよ。皆が Shift JIS を使い続けるからいつまでも Shift JIS が無くならないんですよ。Windows は 30 年前に Unicode に移行したというのに・・・
Views: 0