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

名称

SHA_Init, SHA_Update, SHA_Final, SHA_End, SHA_File, SHA_FileChunk, SHA_Data, SHA1_Init, SHA1_Update, SHA1_Final, SHA1_End, SHA1_File, SHA1_FileChunk, SHA1_DataFIPS 160 と 160-1 ``SHA'' メッセージ要約を計算する

ライブラリ

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

書式

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

void
SHA_Init( SHA_CTX *context);

void
SHA_Update( SHA_CTX *context, const unsigned char *data, size_t len);

void
SHA_Final( unsigned char digest[20], SHA_CTX *context);

char *
SHA_End( SHA_CTX *context, char *buf);

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

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

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

void
SHA1_Init( SHA_CTX *context);

void
SHA1_Update( SHA_CTX *context, const unsigned char *data, size_t len);

void
SHA1_Final( unsigned char digest[20], SHA_CTX *context);

char *
SHA1_End( SHA_CTX *context, char *buf);

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

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

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

解説

SHA_SHA1_ 関数は入力バイトの任意の数のために 160 ビットの暗号のチェックサム (要約) を計算します。暗号のチェックサムは一方通行のハッシュ関数です。すなわち、特定の出力に対応する入力を見つけることは計算上実行不可能です。この最終結果は、実際の入力を示さない入力データの“指紋”です。

SHA (あるいは SHA-0) は FIPS 160 で指定されたオリジナルの Secure Hash Algorithm (安全なハッシュアルゴリズム) です。それは、直ちに安全でないと証明され、 SHA-1 によって取って代わられました。 SHA-0 は互換性目的だけのために含まれています。

SHA1_Init(), SHA1_Update() および SHA1_Final() 関数は、中核関数です。 SHA_CTX を割り付けて、 SHA1_Init() でそれを初期化して、 SHA1_Update() でデータを処理し、 SHA1_Final() を使用して、最後に結果を抽出します。

SHA1_End() は返り値を 16 進数で 160 ビットに相当する 41 文字 (終了する '\0' を含んで) の ASCII 文字列に変換する SHA1_Final() のためのラッパです。

SHA1_File() は、ファイルの要約を計算し、そして結果を返すために SHA1_End() を使用します。ファイルをオープンすることができない場合、NULL ポインタが返されます。 SHA1_FileChunk() は SHA1_File() と似ていますが、指定されたファイルの offset から length バイトに渡る範囲の要約だけを計算します。 length パラメータに 0 またはファイルの残りの部分の長さより大きな値が指定されれば、 SHA1_FileChunk() は offset からファイルの終わりまでの要約を計算します。 SHA1_Data() は、メモリ中のデータの塊 (チャンク) の要約を計算し、そして結果を返すために SHA1_End() を使用します。

SHA1_End(), SHA1_File() あるいは SHA1_Data() を使用する場合、 buf 引数は NULL ポインタでありえます、その場合には、返された文字列は malloc(3) で割り付けられ、続いて使用の後で free(3) を使用して明示的に割り付け解除されなければなりません。 buf 引数が NULL でない場合、それは、バッファ空間 (スペース) の少なくとも 41 文字を指さなければなりません。

歴史

これらの機能は、 FreeBSD 4.0 で登場しました。

作者

中核ハッシュルーチンは、公表された FIPS 規格に基づいて Eric Young によって実装されました。

バグ

2 ファイルが同じハッシュ値を持っているのを見つける、および特定のハッシュ値をもつファイルを見つける方法は存在するとは知られていません。他方で、そのような方法が存在しないという保証はありません。

SHA-1 の IA32 (インテル) 実装は、オリジナルの 80386 には存在しない‘ bswapl’命令を大いに活用します。それらのプロセッサで SHA-1 を使用する試みは不正命令トラップを引き起こします。 (恐らく、カーネルは単にこの命令をエミュレートするべきです。)

February 25, 1999 FreeBSD