D 1.0   D 2.0
About Japanese Translation

Last update Tue Oct 16 09:58:54 2007

std.md5

任意のデータのMD5ダイジェストを計算します。MD5ダイジェストはチェックサムやCRCに似た16byteのデータですが、より頑強です。

この計算には二種類の方法があります。一つ目は、sum()関数の1回の呼び出しで 全て一気に計算してしまう方法。二つ目は、データをバッファリングする場合です。

BUGS:
MD5ダイジェストには既にコリジョンが発見されています

Author:
このライブラリのアルゴリズムとルーチンは、 RSA Data Security, Inc の MD5 Message-Digest Algorithm に由来します。

References:
Wikipedia on MD5

Example:
// This code is derived from the
// RSA Data Security, Inc. MD5 Message-Digest Algorithm.

import std.md5;

private import std.stdio;
private import std.string;
private import std.c.stdio;
private import std.c.string;

int main(char[][] args)
{
    foreach (char[] arg; args)
	 MDFile(arg);
    return 0;
}

/* Digests a file and prints the result. */
void MDFile(char[] filename)
{
    FILE* file;
    MD5_CTX context;
    int len;
    ubyte[4 * 1024] buffer;
    ubyte digest[16];

    if ((file = fopen(std.string.toStringz(filename), "rb")) == null)
	writefln("%s can't be opened", filename);
    else
    {
	context.start();
	while ((len = fread(buffer, 1, buffer.sizeof, file)) != 0)
	    context.update(buffer[0 .. len]);
	context.finish(digest);
	fclose(file);

	writefln("MD5 (%s) = %s", filename, digestToString(digest));
    }
}


void sum(ubyte[16] digest, void[] data);
配列 data のMD5ダイジェストを計算

void printDigest(ubyte[16] digest);
ダイジェストを16進表記で標準出力に表示

string digestToString(ubyte[16] digest);
MD5ダイジェストを文字列に変換

struct MD5_CTX;
MD5計算のコンテキストを保持

ダイジェストを計算するデータがバッファリングされているときに使用します。

void start();
MD5メッセージダイジェスト処理を開始します。

void update(void[] input);
新しいブロック input を処理してコンテキストを更新し、 MD5メッセージダイジェスト処理を続行します。

void finish(ubyte[16] digest);
MD5メッセージダイジェスト処理を終了し、結果を digest へ出力します。