結論

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・末尾欠落・内容変更・別形式の結果を比較した図

一次資料

本文で参照した一次資料の引用と出典をまとめます。

このコマンドレットは 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手

送信側の原本と、受信したファイルの名前・容量・展開後の内容を分けて照合すると、同じ容量でも見落とす違いを確認できます。再送の相談では、どのファイルで何が起きたかを示すと、形式違いと展開エラーを区別しやすくなります。

ZIP分割出力したZIPのファイル名と内容を確かめる登録なしで使えます開く