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)); }
- いくつかの配列 data のMD5ダイジェストを計算
- MD5ダイジェストを文字列に変換
- 渡された配列 data の全体のMD5ダイジェストを計算
Example:
string a = "Mary has ", b = "a little lamb"; int[] c = [ 1, 2, 3, 4, 5 ]; string d = getDigestString(a, b, c);
- MD5計算のコンテキストを保持
ダイジェストを計算するデータがバッファリングされているときに使用します。
- MD5メッセージダイジェスト処理を開始します。
- 新しいブロック input
を処理してコンテキストを更新し、
MD5メッセージダイジェスト処理を続行します。
- MD5メッセージダイジェスト処理を終了し、結果を
digest へ出力します。