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