EN JA
MD4(3)
MD4(3) FreeBSD Library Functions Manual MD4(3)

名称

MD4Init, MD4Update, MD4Pad, MD4Final, MD4End, MD4File, MD4FileChunk, MD4DataRSA Data Security 社の ``MD4'' メッセージダイジェストを計算する

ライブラリ

Message Digest (MD4, MD5, etc.) Support Library (libmd, -lmd)

書式

#include < sys/types.h>
#include < md4.h>

void
MD4Init( MD4_CTX *context);

void
MD4Update( MD4_CTX *context, const void *data, unsigned int len);

void
MD4Pad( MD4_CTX *context);

void
MD4Final( unsigned char digest[16], MD4_CTX *context);

char *
MD4End( MD4_CTX *context, char *buf);

char *
MD4File( const char *filename, char *buf);

char *
MD4FileChunk( const char *filename, char *buf, off_t offset, off_t length);

char *
MD4Data( const void *data, unsigned int len, char *buf);

解説

MD4 関数群は、任意の数の入力バイトに対して 128 ビット暗号のチェックサム (ダイジェスト) を計算します。暗号のチェックサムは、一方向ハッシュ関数です、すなわち、特別の出力に対応する入力を (徹底的な検索を除いて) 見つけることはできません。この最終結果は、それらの実際の入力を明らかにしない入力データの“指紋”です。

MD4 は、最も高速で、MD5 は、いくらか遅くなります。 MD4 は、今壊れています。後方互換性が必要なところのみ使用されるべきです。 MD5 は、(1999-02-11) まだ壊れていませんが、十分な攻撃はおこなわれています。そのセキュリティには、いくつか疑問があります。 MD4 および MD5 の両方に対する攻撃は、両方とも“衝突”を見つける性質にあります–すなわち、同じ値のハッシュの複数の入力です。攻撃者がハッシュ値を与えられた正確なオリジナルの入力を決定することができることはまだありそうもありません。

MD4Init(), MD4Update(), MD4Final() 関数は、中心的な関数群です。 MD4_CTX を割り付け、 MD4Init() で初期化し、 MD4Update() でデータを処理し、最後に MD4Final() を使って結果を抽出します。

MD4Pad() 関数は、計算を終了しないで、 MD4Final() で行われるのと同じ方法でメッセージデータを詰めるために使用できます。

MD4End() 関数は、返り値を 16 進で 128 ビットを表現する 33 文字 (終端の '\0' を含む) の ASCII 文字列に変換する MD4Final() のラッパです。

MD4File() 関数は、ファイルのダイジェストを計算し、 MD4End() を使用して結果を返します。ファイルがオープンできない場合は、NULL ポインタを返します。 MD4FileChunk() 関数は、 MD4File() と同様ですが、 offset で始まりスパニング length バイトで指定されたファイルのバイト範囲を越えるダイジェストを計算するだけです。 length パラメータが 0 かまたはファイルの残っている部分の長さ以上に指定されるなら、 MD4FileChunk() は、 offset からファイルの終りまでダイジェストを計算します。 MD4Data() 関数は、メモリ中のデータのチャンク(塊)のダイジェストを計算し、 MD4End() を使用して結果を返します。

MD4End(), MD4File(), MD4Data() を使用する場合、 buf 引数は、NULL ポインタとできます。その場合は、 malloc(3) で割り付けられた文字列が返されるので、使用後は、 free(3) を使って明示的に割り付けを取り消さなければなりません。 buf 引数が NULL でない時は、すくなくとも 33 文字分のバッファの空間を指していなければなりません。

関連項目

md4(3), md5(3), sha(3) R. Rivest, The MD4 Message-Digest Algorithm, RFC 1186. R. Rivest, The MD5 Message-Digest Algorithm, RFC 1321. H. Dobbertin, Alf Swindles Ann, CryptoBytes, 1(3):5, 1995. MJ. B. Robshaw, On Recent Results for MD2, MD4 and MD5, RSA Laboratories Bulletin, 4, November 12, 1996.

歴史

これらの関数は、 FreeBSD 2.0 で登場しました。

作者

オリジナルの MD4 ルーチンは、 RSA Data Security 社によって開発され、上記の参照で公開されました。このコードは、 Poul-Henning Kamp <phk@FreeBSD.org>による実装に直接由来します。

Phk ristede runen

バグ

同じハッシュ値を持つような 2 つのファイルを見つける方法、または特定のハッシュ値を持つようなファイルを見つける方法は知られていません。一方、そのような方法が存在しないという保証もありません。 Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All rights reserved.

このソフトウェアをコピーし使用するのためのライセンスは、すべての資料に言及するかこのソフトウェアか関数の参照で、 "RSA Data Security 社の MD4 メッセージダイジェストアルゴリズム" (原文: "RSA Data Security, Inc. MD4 Message-Digest Algorithm") の識別を付けることで与えられます。また、すべての資料に言及するか派生した仕事の参照で、仕事が "RSA Data Security 社に由来した MD4 メッセージダイジェストアルゴリズム" (原文: "derived from the RSA Data Security, Inc. MD4 Message-Digest Algorithm") で識別されれば、作成するためと派生した仕事を使うためのライセンスは、許可されます。

RSA Data Security 社は、このソフトウェアの市場性、または任意の特別目的のソフトウェアの適合についての利害関係に抗議しません。いかなる種類の明示的または暗黙的な保証もなく "現状のまま (as is)"で提供されます。

これらの通知は、文書および (または) ソフトウェアの任意の部分の任意のコピーに (訳注: 原文で) 保持されなければなりません。

February 11, 1999 FreeBSD