--------------------------------------------------------------------------------
checksum ver.1.00.00 (20240720a)

チェックサムを表示または照合する

対応アルゴリズム
MD5 / SHA1 / SHA256 / SHA384/ SHA512 / cksum CRC-32 / sum (BSD) / sum (SystemV)

Unix系OSでよく使われる md5sum, sha256sum, cksum, sum などのコマンドと似た操作を
PowerShell上で実現できます。

--------------------------------------------------------------------------------
 作者
------
ritsuka

  Web                    https://ritska.com
  X (twitter)            @ritsukaPya
  ActivityPub (misskey)  @ritsukaPya@misskey.io
  Bluesky                @ritsukapya.bsky.social

--------------------------------------------------------------------------------
 動作環境
----------
* Windows PowerShell
* PowerShell Core

--------------------------------------------------------------------------------
 インストール
--------------
パスの通ったディレクトリ（フォルダ）の中に checksum.ps1 ファイルをコピーして下さい。

--------------------------------------------------------------------------------
 使用方法
----------
使用法: checksum [オプション]... [ファイル]...
MD5/SHA1,256,384,512/CKSUM/SUM(BSD,SystemV) チェックサムを表示または照合します。

使用例:
  対象ファイルのSHA256ハッシュを表示
    checksum *.jpg
  対象ファイルのMD5ハッシュを表示
    checksum -a md5 *.jpg
  対象ファイルのSHA256ハッシュを表示 (カレントディレクトリ内を再帰検索)
    checksum -r *.jpg
  対象ファイルのSHA256ハッシュを表示 (結果をファイルに書き出し: LF,UTF-8 text)
    checksum *.jpg -o CHECKSUM.txt
  チェックサムファイルに記されたハッシュ値とファイルのハッシュ値を照合
    checksum -c CHECKSUM.txt

ファイルの指定がない場合やファイルが - の場合、パイプラインから読み込みを行います。
  (UTF-8文字列またはバイト配列 byte[] として解釈します)
  パイプライン読込の例:
    Get-Content textfile.txt | checksum <UTF-8文字列として読込>
    Get-Content -AsByteStream -Raw textfile.txt | checksum <byte[]として読込>
  注意:
    PowerShellのパイプラインは、ネイティブコマンド等からバイナリデータを受け取った際に
    UTF-8文字列への変換を試み、その結果データが壊れます。これは仕様です。

チェックサム作成:
  -a, -algorithm TYPE  使用するダイジェスト種別を指定する (下記の TYPE の説明を参照)
  -r, -recurse         現在のディレクトリ内を再帰検索する (ディレクトリを含むパスは指定不可)
  -b, -binary          バイナリモードで読み込む
                         (テキストモードとの違いはないが、出力に"*"マークがつく)
  -t, -text            テキストモードで読み込む (デフォルト)
  -z, -zero            出力行の区切りとして改行文字ではなくNULを使用する
      -tag, -bsd       BSD形式のチェックサムを作成する

  -o, -outfile OUTFILE テキストファイルに保存する (改行LF, BOMなしUTF-8)
  -f, -force           出力先ファイルが存在する場合に上書きする (-oと共に使用)
      -add             出力先ファイルが存在する場合に追記する   (-oと共に使用)

チェックサム照合:
  -c, -check FILE      FILEからチェックサムを読み込み、照合する

その他:
      -help, -usage    このヘルプを表示して終了する
  -v, -version         バージョン情報を表示して終了する
  -e, -english         ユーザーのロケールに関わりなくメッセージを英語表示にする

TYPE 使用可能なダイジェストアルゴリズム:
  md5     : MD5 (128-bit)
  sha1    : SHA1 (160-bit)
  sha256  : SHA256 (256-bit) *デフォルト*
  sha384  : SHA384 (384-bit)
  sha512  : SHA512 (512-bit)
  sumsysv : UN*Xの "sum" コマンドに相当 - System V方式アルゴリズム
  sumbsd  : UN*Xの "sum" コマンドに相当 - BSD方式アルゴリズム
  cksum   : UN*Xの "cksum" コマンドに相当 - cksum式CRC-32アルゴリズム

  NOTE: UN*Xのcksumで使用されているアルゴリズムは純粋なCRC-32とは異なります。
        純粋なCRC-32値を求めたい時には使用すべきではありません。

--------------------------------------------------------------------------------
 更新履歴
----------
2024-07-20 ver.1.00.00 (20240720a)
 * 公開

--------------------------------------------------------------------------------
 ライセンス  License
---------------------
このソフトウェアは「二条項BSDライセンス」の下に公開されています。
This software is provided under the "2-clause BSD license".

                             * * * * * * * * * * *

Copyright (C) 2024 ritsuka

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

                             * * * * * * * * * * *

注意
以下の日本語訳は単に参考のためのものであり、上記の英語で記されたライセンス文のみが効力を持つ。
この日本語参考訳は『オープンソースライセンスの日本語参考訳』 https://licenses.opensource.jp より引用した。訳者は「2005年2月までの翻訳はVA Linux Systems Japan株式会社の支援で株式会社トップスタジオと佐渡 秀治が担当。以降は佐渡 秀治、朝田 環。」である。


ソースコード形式かバイナリ形式か、変更するかしないかを問わず、以下の条件を満たす場合に限り、再頒布および使用が許可されます。

1. ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、および下記免責条項を含めること。

2. バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の資料に、上記の著作権表示、本条件一覧、および下記免責条項を含めること。

本ソフトウェアは、著作権者およびコントリビューターによって「現状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、および特定の目的に対する適合性に関する暗黙の保証も含め、またそれに限定されない、いかなる保証もありません。著作権者もコントリビューターも、事由のいかんを問わず、 損害発生の原因いかんを問わず、かつ責任の根拠が契約であるか厳格責任であるか（過失その他の）不法行為であるかを問わず、仮にそのような損害が発生する可能性を知らされていたとしても、本ソフトウェアの使用によって発生した（代替品または代用サービスの調達、使用の喪失、データの喪失、利益の喪失、業務の中断も含め、またそれに限定されない）直接損害、間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害について、一切責任を負わないものとします。

--------------------------------------------------------------------------------
