CLX C++ Libraries - md5
Author: clown

CLX C++ Libraries
Home >> md5

# Declaration

    class md5;

# Overview

md5 は，引数に指定された文字列，または1Byte（char 型）の配列に対して MD5 方式でハッシュ値を計算するためのクラスです．使用方法は以下のようになります．

1. reset() メソッドで初期化を行う．
2. update() メソッドに計算を行うためのデータを指定して呼び出す．update() メソッドは，複数回呼び出すことも可能．
3. finish() メソッドで計算処理を終了する．

一度に全てのデータを渡せる場合，これらのメソッドを順番に呼び出す代わりに encode() メソッドを用いることもできます．encode() メソッドは，reset()，update()， finish() メソッドを一度に呼び出します．

# Example

example_md5.cpp

    #include <iostream>
    #include <string>
    #include "clx/md5.h"

    int main(int argc, char* argv[]) {
        std::string s1 = "";
        std::string s2 = "a";
        std::string s3 = "abc";
        std::string s4 = "message digest";
        std::string s5 = "abcdefghijklmnopqrstuvwxyz";
        std::string s6 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

        clx::md5 md;

        std::cout << "str: " << s1 << std::endl;
        std::cout << "md5: " << md.encode(s1).to_string() << std::endl;
        std::cout << std::endl;

        std::cout << "str: " << s2 << std::endl;
        std::cout << "md5: " << md.encode(s2).to_string() << std::endl;
        std::cout << std::endl;

        std::cout << "str: " << s3 << std::endl;
        std::cout << "md5: " << md.encode(s3).to_string() << std::endl;
        std::cout << std::endl;

        std::cout << "str: " << s4 << std::endl;
        std::cout << "md5: " << md.encode(s4).to_string() << std::endl;
        std::cout << std::endl;

        std::cout << "str: " << s5 << std::endl;
        std::cout << "md5: " << md.encode(s5).to_string() << std::endl;
        std::cout << std::endl;

        std::cout << "str: " << s6 << std::endl;
        std::cout << "md5: " << md.encode(s6).to_string() << std::endl;
        std::cout << std::endl;

        return 0;
    }

    Result
    str:
    md5: d41d8cd98f00b204e9800998ecf8427e

    str: a
    md5: 0cc175b9c0f1b6a831c399e269772661

    str: abc
    md5: 900150983cd24fb0d6963f7d28e17f72

    str: message digest
    md5: f96b697d7cb7938d525a2f31aaf161d0

    str: abcdefghijklmnopqrstuvwxyz
    md5: c3fcd3d76192e4007dfb496cca67e13b

    str: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
    md5: d174ab98d277d9f5a5611c2c9f419d9f

# Related Types

    typedef unsigned char uchar_t;
    typedef char char_type;
    typedef std::string string_type;

# Construction and Member Functions

    md5();
    explicit md5(const char_type* src, size_t n);
    explicit md5(const string_type& src);

    md5& encode(const char_type* src, size_t n);
    md5& encode(const string_type& src);

    void reset();
    void update(const char_type* src, size_t n);
    void finish();

MD5 方式のハッシュ値を計算する場合は，encode() メソッドか，reset()，update()， finish() メソッド群のどちらかを使用します．後者のメソッド群は， データサイズが大きいなどの理由で一度に全てのデータを渡すことができない場合に使用します．

    const uchar_t* code() const;
    string_type to_string() const;

code() メソッドは，計算結果のハッシュ値を返します．to_string() メソッドは， 計算結果を数値文字列に変換したものを返します．

# Related Page

1. CLX C++ Libraries - sha1

# Referrence

1. RFC1321 - The MD5 Message-Digest Algorithm