Next: , Previous: , Up: Text   [Contents][Index]


31.25 チェックサムとハッシュ

Emacsには、暗号化ハッシュ(cryptographic hashes)計算用のビルトインのサポートがあります。暗号化ハッシュ、またはチェックサム(checksum)とは、データ断片にたいするデジタルな“指紋(fingerprint)”であり、そのデータが変更されていないかチェックするために使用できます。

EmacsはMD5、SHA-1、SHA-2、SHA-224、SHA-256、SHA-384、SHA-512といった一般的な暗号化ハッシュアルゴリズムをサポートします。これらのアルゴリズムのうちMD5はもっとも古く、ネットワーク越しに転送されたメッセージの整合性をチェックするために、一般的にはメッセージダイジェスト(message digests)内で使用されています。MD5は“衝突耐性(collision resistant)”をもたない(同じMD5ハッシュをもつ異なるデータ片を故意にデザインすることが可能)ので、セキュリティに関連することに使用するべきではありません。同様な理論上の欠点は、SHA-1にも存在します。したがって、セキュリティに関連するアプリケーションにたいしては、SHA-2のような、他のハッシュタイプを使用するべきです。

Function: secure-hash algorithm object &optional start end binary

この関数はobjectにたいするハッシュをリターンする。引数algorithmはどのハッシュを計算するかを示すシンボルでmd5sha1sha224sha256sha384sha512のいずれか。引数objectはバッファーまたは文字列であること。

オプション引数startendは、メッセージダイジェストを計算するobject部分を指定する文字位置。これらがnilか省略なら、object全体にたいしてハッシュを計算する。

引数binaryが省略かnilなら、通常のLisp文字列としてハッシュのテキスト形式(text form)をリターンする。binaryが非nilなら、ユニバイト文字列に格納されたバイトシーケンスとしてハッシュのバイナリー形式(binary form)をリターンする。

この関数はobjectのテキストの内部表現(Text Representationsを参照)からハッシュを直接計算しない。かわりにコーディングシステム(Coding Systemsを参照)を使用してテキストをエンコードして、そのエンコード済みテキストからハッシュを計算する。objectがバッファーなら使用されているコーディングが、そのテキストをファイルに書き込むためのデフォルトとして選択される。objectが文字列ならユーザーの好むコーディングシステムが使用される(Recognize Coding in GNU Emacs Manualを参照)。

Function: md5 object &optional start end coding-system noerror

この関数はMD5ハッシュをリターンする。これはほとんどの目的において、algorithm引数にmd5を指定してsecure-hashを呼び出すのと等価であり半ば時代遅れである。引数のobjectstartendsecure-hashのときと同じ意味をもつ。

coding-systemが非nilなら、それはテキストをエンコードするために使用するコーディングシステムを指定する。省略またはnilなら、secure-hashと同様にデフォルトコーディングシステムが使用される。

md5は通常は指定や選択されたコーディングシステムを使用してテキストをエンコードできなければエラーをシグナルする。しかしnoerrorが非nilなら、かわりに黙ってraw-textコーディングシステムを使用する。