LIBRARY EXPORTS CreateAlgorithm @1 ; アルゴリズムへのハンドルを作成します。 DestroyAlgorithm @2 ; アルゴリズムを破棄します。 InitAlgorithm @3 ; アルゴリズムを初期化します。 InputData @4 ; アルゴリズムへデータを入力します。 GetHashLength @5 ; ハッシュのサイズをバイト数で取得します。 GetHash @6 ; 入力されたデータからハッシュを取得します。 GetHashTextLength @7 ; ハッシュ文字列の文字列長をバイト数で取得します。 GetHashText @8 ; 入力されたデータからハッシュ文字列を取得します。
1. LoadLibrary() で DLL をロードする。
2. GetProcAddress() で関数へのポインタを取得する。
3. CreateAlgorithm() でアルゴリズムへのハンドルを取得する。
4. InitAlgorithm() でアルゴリズムを初期化する。
5. InputData() でデータをアルゴリズムへ入力する。
6. GetHash() で計算結果を受け取る。
7. DestroyAlgorithm() でアルゴリズムへのハンドルを解放する。
8. FreeLibrary() で DLL を開放する。
アルゴリズムへのハンドルを作成します。
1
HANDLE WINAPI CreateAlgorithm( void );
作成したアルゴリズムへのハンドルを返します。
アルゴリズムの作成に失敗した場合は null を返します。
作成したアルゴリズムは関数 DestroyAlgorithm() で破棄します。
HANDLE hAlgorithm = CreateAlgorithm(); if ( hAlgorithm ) { if ( 0 == InitAlgorithm( hAlgorithm ) ) { if ( 0 == InputData( hAlgorithm, data, length ) ) { const int hashsize = GetHashLength( hAlgorithm ); if ( 0 < hashsize ) { void *buffer = malloc( hashsize ); if ( buffer ) { if ( 0 == GetHash( hAlgorithm, buffer, hashsize ) ) { …… 省略 …… } } } } } if ( 0 != DestroyAlgorithm( hAlgorithm ) ) { …… 省略 …… } }
アルゴリズムを破棄します。
2
DWORD WINAPI DestroyAlgorithm( HANDLE hAlgorithm );
HANDLE hAlgorithm
破棄するアルゴリズムへのハンドルを指定します。
関数が成功した場合は 0 を返します。
関数が失敗した場合は 0 以外の エラー識別値 を返します。
アルゴリズムを初期化します。
アルゴリズムに入力済みのデータは全て無効になります。
3
DWORD WINAPI InitAlgorithm( HANDLE hAlgorithm );
HANDLE hAlgorithm
アルゴリズムへのハンドルを指定します。
関数が成功した場合は 0 を返します。
関数が失敗した場合は 0 以外の エラー識別値 を返します。
ハッシュを計算したいデータをアルゴリズムへ入力します。
データの入力は複数回に分けて行うこともできます。
4
DWORD WINAPI InputData( HANDLE hAlgorithm, const void *data, int length );
HANDLE hAlgorithm
アルゴリズムへのハンドルを指定します。
const void *data
書き込むデータへのポインタを指定します。
int length
引数 data が指す領域のサイズを バイト数 で指定します。
0 以下の値を指定すると関数は失敗します。
関数が成功した場合は 0 を返します。
関数が失敗した場合は 0 以外の エラー識別値 を返します。
char buffer[ 1024 ]; while( 0 < (length = fread( buffer, 1, sizeof( buffer ), fp )) ) { if ( 0 == InputData( hAlgorithm, buffer, length ) ) { …… 省略 …… } }
ハッシュのサイズを バイト数 で返します。
5
int WINAPI GetHashLength( HANDLE hAlgorithm );
HANDLE hAlgorithm
アルゴリズムへのハンドルを指定します。
ハッシュのサイズを バイト数 で返します。
関数が失敗した場合は 0 以下の値を返します。
アルゴリズムに入力されたデータからハッシュを計算します。
6
DWORD WINAPI GetHash( HANDLE hAlgorithm, void *buffer, int bufsize );
HANDLE hAlgorithm
アルゴリズムへのハンドルを指定します。
void *buffer
バッファへのポインタを指定します。
この領域に ハッシュ の先頭 bufsize バイトが格納されます。
int bufsize
引数 buffer が指す領域のサイズを バイト数 で指定します。
ハッシュを格納する領域に必要なサイズは関数 GetHashLength() で取得します。
0 以下の値を指定すると関数は失敗します。
関数が成功した場合は 0 を返します。
関数が失敗した場合は 0 以外の エラー識別値 を返します。
const int hashsize = GetHashLength( hAlgorithm ); if ( 0 < hashsize ) { void *buffer = malloc( hashsize ); if ( buffer ) { if ( 0 == GetHash( hAlgorithm, buffer, hashsize ) ) { …… 省略 …… } free( buffer ); } }
ハッシュ文字列の長さを バイト数 で返します。
7
int WINAPI GetHashTextLength( HANDLE hAlgorithm );
HANDLE hAlgorithm
アルゴリズムへのハンドルを指定します。
ハッシュ文字列の長さを バイト数 で返します。
ハッシュ文字列の長さに終端文字 '\0' は含まれません。
関数が失敗した場合は 0 以下の値を返します。
const int length = GetHashTextLength( hAlgorithm ); if ( 0 < length ) { const int bufsize = 1 + length; void *buffer = malloc( bufsize ); if ( buffer ) { if ( 0 == GetHashText( hAlgorithm, buffer, bufsize ) ) { …… 省略 …… } free( buffer ); } }
アルゴリズムに入力されたデータからハッシュ文字列を取得します。
8
DWORD WINAPI GetHashText( HANDLE hAlgorithm, char *buffer, int bufsize );
HANDLE hAlgorithm
アルゴリズムへのハンドルを指定します。
char *buffer
バッファへのポインタを指定します。
この領域に ハッシュ文字列 の先頭 bufsize-1 バイトが格納されます。
文字列末尾には終端文字 '\0' が付加されます。
int bufsize
引数 buffer が指す領域のサイズを バイト数 で指定します。
ハッシュ文字列を格納する領域に必要なサイズは関数 GetHashTextLength() で取得します。
0 以下の値を指定すると関数は失敗します。
関数が成功した場合は 0 を返します。
関数が失敗した場合は 0 以外の エラー識別値 を返します。
const int length = GetHashTextLength( hAlgorithm ); if ( 0 < length ) { const int bufsize = 1 + length; void *buffer = malloc( bufsize ); if ( buffer ) { if ( 0 == GetHashText( hAlgorithm, buffer, bufsize ) ) { …… 省略 …… } free( buffer ); } }
0x00000000 | - | 関数は正常に終了しました。 |
0x00000001 | - | 指定された引数が不正です。 |
0x00000100 | - | 関数内部でエラーが発生しました。 |
2005/03/07
md4.dll 0.00
md5.dll 0.00
sha1.dll 0.00
sha256.dll 0.00
sha512.dll 0.00