RIPEMD(3) | FreeBSD Library Functions Manual | RIPEMD(3) |
名称
RIPEMD160_Init, RIPEMD160_Update, RIPEMD160_Final, RIPEMD160_End, RIPEMD160_File, RIPEMD160_FileChunk, RIPEMD160_Data — RIPEMD160 メッセージ要約を計算するライブラリ
Message Digest (MD4, MD5, etc.) Support Library (libmd, -lmd)書式
#include < sys/types.h>#include < ripemd.h>
void
RIPEMD160_Init( RIPEMD160_CTX *context);
void
RIPEMD160_Update( RIPEMD160_CTX *context, const unsigned char *data, unsigned int len);
void
RIPEMD160_Final( unsigned char digest[20], RIPEMD160_CTX *context);
char *
RIPEMD160_End( RIPEMD160_CTX *context, char *buf);
char *
RIPEMD160_File( const char *filename, char *buf);
char *
RIPEMD160_FileChunk( const char *filename, char *buf, off_t offset, off_t length);
char *
RIPEMD160_Data( const unsigned char *data, unsigned int len, char *buf);
解説
RIPEMD160_
関数は任意の数の入力バイトに対して 160 ビットの暗号のチェックサム (要約) を計算します。暗号のチェックサムは一方通行のハッシュ関数です。すなわち、特定の出力に対応する入力を見つけることは計算上実行不可能です。この最終結果は、実際の入力を示さない入力データの“指紋”です。
RIPEMD160_Init(), RIPEMD160_Update() および RIPEMD160_Final() 関数は、中核関数です。 RIPEMD160_CTX を割り付けて、 RIPEMD160_Init() でそれを初期化して、 RIPEMD160_Update() でデータを処理し、 RIPEMD160_Final() を使用して、最後に結果を抽出します。
RIPEMD160_End() 関数は返り値を 16 進数で 160 ビットに相当する 41 文字 (終了する '\0' を含んで) の ASCII 文字列に変換する RIPEMD160_Final() のためのラッパです。
RIPEMD160_File() 関数は、ファイルの要約を計算し、そして結果を返すために RIPEMD160_End() を使用します。ファイルをオープンすることができない場合、 NULL ポインタが返されます。 RIPEMD160_FileChunk() 関数は、 RIPEMD160_File() と似ていますが、指定されたファイルの offset から length バイトに渡る範囲の要約だけを計算します。 length パラメータに 0 またはファイルの残りの部分の長さより大きな値が指定されれば、 RIPEMD160_FileChunk() は、 offset からファイルの終わりまでの要約を計算します。 RIPEMD160_Data() 関数は、メモリ中のデータの塊 (チャンク) の要約を計算し、そして結果を返すために RIPEMD160_End() を使用します。
RIPEMD160_End(), RIPEMD160_File() あるいは RIPEMD160_Data() を使用する場合、 buf 引数は、NULL ポインタでありえます、その場合には、返された文字列は malloc(3) で割り付けられ、続いて使用の後で free(3) を使用して明示的に割り付け解除されなければなりません。 buf 引数が NULL でない場合、それは、バッファ空間 (スペース) の少なくとも 41 文字を指さなければなりません。
歴史
これらの機能は、 FreeBSD 4.0 で登場しました。作者
中核ハッシュルーチンは、公表された RIPEMD160 規格に基づいて Eric Young によって実装されました。バグ
2 ファイルが同じハッシュ値を持っているのを見つける、および特定のハッシュ値をもつファイルを見つける方法は存在するとは知られていません。他方で、そのような方法が存在しないという保証はありません。February 26, 1999 | FreeBSD |