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

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

Emacs supports several common cryptographic hash algorithms: MD5, SHA-1, SHA-2, SHA-224, SHA-256, SHA-384 and SHA-512. MD5 is the oldest of these algorithms, and is commonly used in message digests to check the integrity of messages transmitted over a network. MD5 and SHA-1 are not collision resistant (i.e., it is possible to deliberately design different pieces of data which have the same MD5 or SHA-1 hash), so you should not use them for anything security-related. For security-related applications you should use the other hash types, such as SHA-2 (e.g., sha256 or sha512).

Function: secure-hash-algorithms

この関数はsecure-hashが使用可能なアルゴリズムを表すシンボルのリストをリターンする。

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)をリターンする。リターンされる文字列の長さはalgorithmに依存する:

  • md5: 32文字(binaryが非nilなら16バイト)
  • sha1: 40文字(binaryが非nilなら20バイト)
  • sha224: 56文字(binaryが非nilなら28バイト)
  • sha256: 64文字(binaryが非nilなら32バイト)
  • sha384: 96文字(binaryが非nilなら48バイト)"
  • sha512: 128文字(binaryが非nilなら64バイト)"

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

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

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

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

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

Function: buffer-hash &optional buffer-or-name

buffer-or-nameのハッシュをリターンする。nilの場合のデフォルトはカレントバッファー。この関数はsecure-hashとは対照的にコーディングシステムとは無関係にバッファーの内部表現にもとづいてハッシュを計算する。したがって同一のEmacs上で実行中の2つのバッファーを比較する際にのみ有用であり、異なるバージョンのEmacs間で同じハッシュをリターンする保証はない。これは巨大なバッファーにたいしてsecure-hashより幾分効果的であり、secure-hashほど多くのメモリーを割り当てないはずである。

Function: sha1 object &optional start end binary

この関数は以下のようにsecure-hashを呼び出すことと同じ:

(secure-hash 'sha1 object start end binary)

これはbinarynilなら40文字の文字列、それ以外の場合には20バイトのユニバイト文字列をリターンする。


This page has generated for branch:work/emacs-30_8ac894e2246f25d2a2a97d866b10e6e0b0fede5a, commit:b7b3c5b81a7a4eec61faa3ed3d7c731d52d3987b to check Japanese translation.