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

名称

SHA256_Init, SHA256_Update, SHA256_Final, SHA256_End, SHA256_File, SHA256_FileChunk, SHA256_DataFIPS 180-2 ``SHA-256'' メッセージ要約を計算する

ライブラリ

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

書式

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

void
SHA256_Init( SHA256_CTX *context);

void
SHA256_Update( SHA256_CTX *context, const unsigned char *data, size_t len);

void
SHA256_Final( unsigned char digest[32], SHA256_CTX *context);

char *
SHA256_End( SHA256_CTX *context, char *buf);

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

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

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

解説

SHA256_ 関数は、いくつもの入力バイトの 256 ビットの暗号のチェックサム (ダイジェスト (要約)) を計算します。暗号のチェックサムは一方向のハッシュ関数です。すなわち、特定の出力に対応する入力を見つけることは計算上非現実的です。この最終結果は、実際の入力を明らかにしない、入力データの“fingerprint” (指紋) です。

SHA256_Init(), SHA256_Update() と SHA256_Final() 関数はコア関数です。 SHA256_CTX を割り付けて、 SHA256_Init() でそれを初期化し、 SHA256_Update() でデータをザッと目を通し、そして、最後に SHA256_Final() を使用して結果を抽出します。

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

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

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

関連項目

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

歴史

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

作者

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

バグ

2 つのファイルが同じハッシュ値があることが見つかる、または、特定のハッシュ値があるファイルが見つかるような方法が存在することは知られていません。他方では、そのような方法が存在していないという保証はありません。
September 14, 2005 FreeBSD