D 1.0   D 2.0
About Japanese Translation

Last update Wed Nov 4 22:39:15 2009

std.md5

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

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

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

Source:
std/md5.d

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;

void main(string[] args)
{
    foreach (char[] arg; args)
	 MDFile(arg);
}

/* Digests a file and prints the result. */
void MDFile(string filename)
{
    FILE* file = enforce(fopen(filename), "Could not open file `"~filename~"'");
    scope(exit) fclose(file);
    ubyte digest[16];

    MD5_CTX context;
    context.start();
    foreach (ubyte[] buffer; chunks(file, 4096 * 1024))
        context.update(buffer);
    context.finish(digest);
    writefln("MD5 (%s) = %s", filename, digestToString(digest));
}
void sum(ref ubyte[16u] digest, in void[][] data...);
いくつかの配列 data のMD5ダイジェストを計算

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

string getDigestString(in void[][] data...);
渡された配列 data の全体のMD5ダイジェストを計算

Example:
string a = "Mary has ", b = "a little lamb";
int[] c = [ 1, 2, 3, 4, 5 ];
string d = getDigestString(a, b, c);


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

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

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

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

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