ファイルのチェックサムを生成します。このタスクは、チェックサムの検証にも使用できます。
MD5やSHA-1を含む多くの一般的なメッセージダイジェスト関数が最近になって脆弱性が見つかっていることに注意してください。セキュリティが重要な環境で使用されるチェックサムを作成するためにこのタスクを使用する場合は、JCEプロバイダーが提供するアルゴリズムを時間をかけて調査してください。また、Bouncy Castle、GNU Cryptoプロジェクト、グラーツ工科大学などのJCEプロバイダーは、JDKに組み込まれているよりも多くのダイジェストアルゴリズムを提供していることにも注意してください。
警告:拡張子のケースは、使用されるアルゴリズムのケースです。SHA1を要求すると、.SHA1拡張子が得られます。sha1を要求すると、.sha1で終わるファイルが得られます。Java Crypto Enginesはアルゴリズムのマッチングで大文字と小文字を区別しないため、目的の出力拡張子に一致する名前を選択するか、fileext属性を設定してください。一般的なハッシュアルゴリズムの名前は、暗号化アーキテクチャの標準アルゴリズム名ドキュメントに記載されています。
| 属性 | 説明 | 必須 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| file | チェックサムを生成するファイル。 | はい。ただし、少なくとも1つのネストされた(ファイルシステムのみの)リソースコレクションが指定されている場合は不要です。 | ||||||||||||
| todir | チェックサムを書き込むルートディレクトリ。 | いいえ。デフォルトでは、チェックサムファイルは元のファイルと同じディレクトリに書き込まれます。Apache Ant 1.6以降 | ||||||||||||
| algorithm | チェックサムの計算に使用するアルゴリズムを指定します。ドキュメントで、SHA-1や SHA-512などの使用可能なアルゴリズム名を確認してください。 |
いいえ。デフォルトはMD5です。 |
||||||||||||
| provider | アルゴリズムのプロバイダーを指定します。 | いいえ | ||||||||||||
| fileext | 生成されたチェックサムファイルの名前は、元のファイル名にfileextを追加したものになります。 | いいえ。デフォルトは.と使用されているアルゴリズム名です。 |
||||||||||||
| property | この属性は2つの異なる意味を持つ可能性があり、verifyproperty属性の有無によって異なります。 verifyproperty属性を設定しない場合、propertyは生成されたチェックサム値で設定されるプロパティの名前を指定します。 verifyproperty属性を設定した場合、propertyは生成されることを期待するチェックサムを指定します(チェックサム自体であり、チェックサムを含むプロパティの名前ではありません)。 fileextが使用されている場合、またはチェックサムを生成するファイルの数が1より大きい場合は、これを指定できません。 |
いいえ | ||||||||||||
| pattern | {0}がチェックサムで、{1}がファイル名に置き換えられる、MessageFormatに適したパターンとして使用するパターンを指定します。Ant 1.7.0以降Ant 1.8.2以降 {2}は書き込まれるチェックサムファイルに対するファイルの相対パス、{3}はプロジェクトのbasedirに対するファイルの相対パス、{4}はファイルの絶対パスで置き換えられます。 |
いいえ。デフォルトは{0}です。 |
||||||||||||
| format | 既知の形式の1つとして使用するパターンを指定します。サポートされている値は次のとおりです。
|
いいえ。デフォルトはCHECKSUMです。 |
||||||||||||
| totalproperty | 指定されている場合、この属性は、すべてのチェックサムとファイルパスのチェックサムを保持するプロパティの名前を指定します。個々のチェックサムと、定義されているリソースコレクション内のファイルへの相対パスを使用して、このチェックサムを計算します。(パス内のファイル区切り文字は、プラットフォームの移植性を確保するために計算前に/に変換されます)。Ant 1.6以降 |
いいえ | ||||||||||||
| forceoverwrite | 宛先ファイルが新しい場合でも、既存のファイルを上書きします。 | いいえ。デフォルトはnoです。 |
||||||||||||
| verifyproperty | 生成されたチェックサムが既存のチェックサムと一致するかどうかに応じて、trueまたは falseで設定されるプロパティの名前を指定します。これが設定されている場合、生成されたチェックサムはファイルやプロパティに書き込まれるのではなく、ファイルまたはプロパティの内容が生成されたチェックサムとの照合に使用されます。 |
いいえ | ||||||||||||
| readbuffersize | ファイルの読み取り時に使用するバッファのサイズ(バイト単位)。 | いいえ。デフォルトは8192です。この値を大きくすると、大きなファイルでのパフォーマンスが向上する場合があります。 |
リソースコレクションは、チェックサムを生成する必要があるファイルを選択するために使用されます。
例1
foo.barのMD5チェックサムを生成し、チェックサムを宛先ファイルfoo.bar.MD5に格納します。foo.bar.MD5は、foo.bar自体よりも新しい場合にのみ上書きされます。
<checksum file="foo.bar"/>
例2
foo.barのMD5チェックサムを生成し、チェックサムをfoo.bar.MD5に格納します。foo.bar.MD5が既に存在する場合は上書きされます。
<checksum file="foo.bar" forceOverwrite="yes"/>
例3
foo.barのMD5チェックサムを生成し、プロジェクトプロパティfoobarMD5に格納します。
<checksum file="foo.bar" property="foobarMD5"/>
例4
foo.barのMD5チェックサムを生成し、foo.bar.MD5と照合し、結果に応じてisMD5okをtrue
またはfalse
に設定します。
<checksum file="foo.bar" verifyProperty="isMD5ok"/>
例5
foo.barのSHA-512チェックサムを生成し、チェックサムを宛先ファイルfoo.bar.ascに格納します。foo.bar.ascは、foo.bar自体よりも新しい場合にのみ上書きされます。
<checksum file="foo.bar" algorithm="SHA-512" fileext="asc"/>
例6
foo.barのMD5チェックサムを生成し、プロパティmd5の値と照合し、結果に応じてisEqualをtrue
またはfalse
に設定します。
<checksum file="foo.bar" property="${md5}" verifyProperty="isEqual"/>
例7
例1と同様ですが、fooという名前で始まるすべてのファイルに対して.MD5ファイルを生成します。
<checksum>
<fileset dir=".">
<include name="foo*"/>
</fileset>
</checksum>
例8
例4と同様ですが、チェックサムが一致する場合にのみ、isChecksumEqualをtrue
に設定します。これは、false
に設定されることはありません。この例は、conditionタスクでの使用法を示しています。
<condition property="isChecksumEqual">
<checksum>
<fileset dir=".">
<include name="foo.bar"/>
</fileset>
</checksum>
</condition>
複数のファイルを処理する場合、条件および/またはverifypropertyを使用すると、考慮されているすべてのファイルでチェックサムが正しく一致した場合にのみ、結果はtrueになります。