結論
ZIPが開けないときは、拡張子・ファイル全体の長さ・中身の整合性を分けて確認できます。 自作の4ファイルを比べると、同じ128バイトのZIPでも、展開後の文字が違う例がありました。
ZIP分割小分けに作ったZIPも中身を照合する登録なしで使えます開く
展開できたことだけで、送信前と内容が同じとは判断できません。 この記事は自作した小さな例の比較です。実際の受信障害の原因や、すべての解凍ソフトの動作を特定するものではありません。
拡張子とZIPの中身を分ける
末尾が.zipでも、中身がZIP形式とは限りません。 今回使ったPowerShellの展開機能について、Microsoftは次の範囲を示しています。
自作のPDFをコピーし、名前の拡張子だけ.zipへ変えたものは、今回のZIP検査でも展開でも失敗しました。名前を変える操作は、ファイル形式を変換する操作ではありません。
ZIPの中にあるファイル名の文字化けとも別の用件です。今回はすべてのZIP内の名前をreport.txtにそろえ、名前の文字コードが結果へ混ざらないようにしています。
ZIPと判定できても、中身の検査は残る
形式の判定と、各ファイルの整合性の確認は別の段階です。 Pythonのis_zipfileは判定について、次の表現を使っています。
これに対して、testzipの説明では次の確認に触れています。
CRCはZIPに保存された内容のチェック値です。今回の比較では、形式の判定は通るのに、CRCの確認で不一致となる例を作りました。 これは保存されたチェック値との整合性であり、送信者の本人確認や安全な内容であることの証明ではありません。
4ファイルを実際に検査・展開した
2026-10-01、n=4の自作ファイルをPython 3.12.10とPowerShell 7.6.5で調べました。 PowerShellのArchiveモジュールは1.2.6です。現行ZIP分割ツールの処理で、TOTAL 100と改行の10バイトを無圧縮で格納した128バイトのZIPを作り、比較用のコピーを用意しました。
| 自作条件 | 容量 | PythonのZIP判定 | Pythonの内容検査 | PowerShell展開 |
|---|---|---|---|---|
| 元のZIP | 128バイト | 通る | 不一致なし | 成功、TOTAL 100 |
| 末尾の22バイトを除いたコピー | 106バイト | 通らない | ZIPとして開けない | 失敗 |
| 内容の1文字だけ変えたコピー | 128バイト | 通る | report.txtのCRC不一致 | 成功、TOTAL 900 |
| 拡張子だけ.zipにしたPDF | 1,754バイト | 通らない | ZIPとして開けない | 失敗 |
3行目は、TOTAL 100の1を9に変え、ZIP側のチェック値はそのまま残したコピーです。元と同じ128バイトで、ファイル名も読めましたが、Pythonで内容を読むとCRCエラーになりました。
一方、この環境のExpand-Archiveは処理を完了し、TOTAL 900という10バイトのファイルを出力しました。出力の全バイトから別にハッシュ値を計算し、元のTOTAL 100とは異なることを確認しています。元との違いは1バイトだけで、ZIP全体の容量は変わっていませんでした。
これは現行ツールの出力が壊れていたという結果ではありません。元のZIPは両環境で中身を読み出せ、原文の10バイトと一致しました。 不一致の例は、測定用コピーへ意図的に変更を加えて作っています。
一次資料
本文で参照した一次資料の引用と出典をまとめます。
このコマンドレットは zip アーカイブでのみ機能します。
— Microsoft Learn「Expand-Archive」、説明 https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.archive/expand-archive?view=powershell-7.6(2026-10-01 到達)
“based on its magic number”
— Python 3.12「zipfile」、is_zipfile https://docs.python.org/3.12/library/zipfile.html(2026-10-01 到達)
“check their CRC’s and file headers”
— 同資料、ZipFile.testzip https://docs.python.org/3.12/library/zipfile.html(2026-10-01 到達)
測っていないこと・ここから先は推論
Windowsのエクスプローラー、7-Zip、macOS、スマートフォンでの展開は測っていません。 暗号化ZIP、複数に分割されたZIP、大容量ファイル、実際のメール送受信やダウンロード中断も対象外です。
4件の人工的な例から、破損の発生率や、ある解凍ソフトの一般的な優劣は出せません。CRCの一致を、改ざんの不存在や無害性の保証としても扱っていません。
次の1手
送信側の原本と、受信したファイルの名前・容量・展開後の内容を分けて照合すると、同じ容量でも見落とす違いを確認できます。再送の相談では、どのファイルで何が起きたかを示すと、形式違いと展開エラーを区別しやすくなります。