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

名称

SHA512_Init, SHA512_Update, SHA512_Final, SHA512_End, SHA512_File, SHA512_FileChunk, SHA512_DataFIPS 180-2 ``SHA-512'' メッセージダイジェストを計算する

ライブラリ

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

書式

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

void
SHA512_Init( SHA512_CTX *context);

void
SHA512_Update( SHA512_CTX *context, const unsigned char *data, size_t len);

void
SHA512_Final( unsigned char digest[64], SHA512_CTX *context);

char *
SHA512_End( SHA512_CTX *context, char *buf);

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

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

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

解説

SHA512_ 関数は、あらゆる入力バイトに対して 512 ビットの暗号のチェックサム (ダイジェスト) を計算します。暗号のチェックサムは、一方向 (one-way) のハッシュ関数です。すなわち、特定の出力に対応している入力を見つけることは計算上不可能です。この最終結果は、実際の入力を明らかにしない入力データの“指紋”です。

SHA512_Init(), SHA512_Update() と SHA512_Final() 関数は、コア関数です。 SHA512_CTX を割りつけ、 SHA512_Init() でそれを初期化し、 SHA512_Update() でデータを見直し、そして、 SHA512_Final() を使用して最終的に結果を抽出します。

SHA512_End() は、返り値を 16 進数で 512 ビットを表す (終端の '\0' を含んで) 65 文字の ASCII 文字列に変換する、 SHA512_Final() のためのラッパです。

SHA512_File() は、ファイルのダイジェストを計算して、結果を返すために SHA512_End() を使用します。ファイルをオープンすることができないなら、NULL ポインタが返されます。 SHA512_FileChunk() は、 SHA512_File() と同様ですが、 offset で始まり、長さ length バイトの指定されたファイルのバイト範囲に渡ってダイジェストのみを計算します。 length のパラメータが 0、またはファイルの残りの部分の長さを越えて指定されるなら、 SHA512_FileChunk() は、 offset からファイルの終りまでのダイジェストを計算します。 SHA512_Data() は、メモリ中のデータの部分のダイジェストを計算し、結果を返すために SHA512_End() を使用します。

SHA512_End(), SHA512_File() または SHA512_Data() を使用するとき、 buf 引数は、NULL ポインタを使用することができ、その場合、返された文字列は、 malloc(3) で割り付けられ、後で、使用の後に free(3) を使用して明白に割り付け解放されなければなりません。 buf 引数が NULL でないなら、少なくとも 65 文字のバッファ空間を指さなければなりません。

関連項目

md2(3), md4(3), md5(3), ripemd(3), sha(3)

歴史

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

作者

コアのハッシュルーチンは、公開された FIPS 180-2 規格に基づいて Colin Percival によって実装されました。

バグ

メソッドは、同じハッシュ値がある 2 つのファイルがある、また特定のハッシュ値があるファイルが見つからないことも、存在することは知られていません。訳注: 二重の否定でどちらが正解か不明。他方では、そのようなメソッドが存在していないという保証はありません。
April 1, 2011 FreeBSD