ストリーム暗号器とハッシュ関数器とからなるブロックを多段に接続してなるハッシュ関数装置であって、初段のストリーム暗号器が、鍵系列を出力する鍵系列出力手段を備え、初段のハッシュ関数器の入力メッセージをブロックの段数で分割し、該分割された入力メッセージに該出力された鍵系列を結合してメッセージデータを生成するメッセージデータ生成手段と、前記初段のハッシュ関数器が、前記生成されたメッセージデータと初期鍵とを入力してハッシュ値を演算するハッシュ値演算手段と、前記初段以降のハッシュ関数器が、前段のハッシュ関数器が生成したハッシュ値とストリーム暗号器が生成するメッセージデータとを入力して、演算したハッシュ値を後段のハッシュ関数器に出力し、最終段のハッシュ関数器のハッシュ値を出力ハッシュ値とすることを特徴とするハッシュ関数装置。通常のハッシュ関数として用いる場合に、各ストリーム暗号器の内部状態が固定値となることを特徴とする請求項1に記載のハッシュ関数装置。鍵付きハッシュ関数として用いる場合に、各ストリーム暗号器に鍵を入力することを特徴とする請求項1に記載のハッシュ関数装置。前記ストリーム暗号器が、鍵系列を出力するたびに、異なる新たな鍵系列を出力することを特徴とする請求項1から請求項3に記載のハッシュ関数装置。入力する鍵系列の長さが所定の長さよりも短い場合に、前記メッセージデータ生成手段が不足したデータ分、固定パターンのパディング処理を行うことを特徴とする請求項1から請求項4に記載のハッシュ関数装置。ストリーム暗号器とハッシュ関数器とからなるブロックを多段に接続してなり、通常のハッシュ関数として用いられるハッシュ関数装置の処理方法であって、初段のストリーム暗号器が、鍵系列を出力する第1のステップと、初段のハッシュ関数器の入力メッセージをブロックの段数で分割する第2のステップと、該分割された入力メッセージに該出力された鍵系列を結合してメッセージデータを生成する第3のステップと、前記初段のハッシュ関数器が、前記生成されたメッセージデータと初期鍵とを入力してハッシュ値を演算する第4のステップと、前記初段以降のハッシュ関数器が、前段のハッシュ関数器が生成したハッシュ値とストリーム暗号器が生成するメッセージデータとを入力して、演算したハッシュ値を後段のハッシュ関数器に出力する第5のステップと、最終段のハッシュ関数器のハッシュ値を出力ハッシュ値とする第6のステップと、を備えたことを特徴とするハッシュ関数装置の処理方法。入力する鍵系列の長さが所定の長さよりも短い場合に、前記第3のステップにおいて、不足したデータ分、固定パターンのパディング処理を行うことを特徴とする請求項6に記載のハッシュ関数装置の処理方法。ストリーム暗号器とハッシュ関数器とからなるブロックを多段に接続してなり、鍵付きハッシュ関数として用いられるハッシュ関数装置の処理方法であって、各ストリーム暗号器に鍵を入力し、初期化処理を行う第1のステップと、初段のストリーム暗号器が、鍵系列を出力する第2のステップと、初段のハッシュ関数器の入力メッセージをブロックの段数で分割する第3のステップと、該分割された入力メッセージに該出力された鍵系列を結合してメッセージデータを生成する第4のステップと、前記初段のハッシュ関数器が、前記生成されたメッセージデータと初期鍵とを入力してハッシュ値を演算する第5のステップと、前記初段以降のハッシュ関数器が、前段のハッシュ関数器が生成したハッシュ値とストリーム暗号器が生成するメッセージデータとを入力して、演算したハッシュ値を後段のハッシュ関数器に出力する第6のステップと、最終段のハッシュ関数器のハッシュ値を出力ハッシュ値とする第7のステップと、を備えたことを特徴とするハッシュ関数装置の処理方法。入力する鍵系列の長さが所定の長さよりも短い場合に、前記第4のステップにおいて、不足したデータ分、固定パターンのパディング処理を行うことを特徴とする請求項8に記載のハッシュ関数装置の処理方法。ストリーム暗号器とハッシュ関数器とからなるブロックを多段に接続してなり、通常のハッシュ関数として用いられるハッシュ関数装置の処理方法をコンピュータに実行させるためのプログラムであって、初段のストリーム暗号器が、鍵系列を出力する第1のステップと、初段のハッシュ関数器の入力メッセージをブロックの段数で分割する第2のステップと、該分割された入力メッセージに該出力された鍵系列を結合してメッセージデータを生成する第3のステップと、前記初段のハッシュ関数器が、前記生成されたメッセージデータと初期鍵とを入力してハッシュ値を演算する第4のステップと、前記初段以降のハッシュ関数器が、前段のハッシュ関数器が生成したハッシュ値とストリーム暗号器が生成するメッセージデータとを入力して、演算したハッシュ値を後段のハッシュ関数器に出力する第5のステップと、最終段のハッシュ関数器のハッシュ値を出力ハッシュ値とする第6のステップと、をコンピュータに実行させるためのプログラム。ストリーム暗号器とハッシュ関数器とからなるブロックを多段に接続してなり、鍵付きハッシュ関数として用いられるハッシュ関数装置の処理方法をコンピュータに実行させるためのプログラムであって、各ストリーム暗号器に鍵を入力し、初期化処理を行う第1のステップと、初段のストリーム暗号器が、鍵系列を出力する第2のステップと、初段のハッシュ関数器の入力メッセージをブロックの段数で分割する第3のステップと、該分割された入力メッセージに該出力された鍵系列を結合してメッセージデータを生成する第4のステップと、前記初段のハッシュ関数器が、前記生成されたメッセージデータと初期鍵とを入力してハッシュ値を演算する第5のステップと、前記初段以降のハッシュ関数器が、前段のハッシュ関数器が生成したハッシュ値とストリーム暗号器が生成するメッセージデータとを入力して、演算したハッシュ値を後段のハッシュ関数器に出力する第6のステップと、最終段のハッシュ関数器のハッシュ値を出力ハッシュ値とする第7のステップと、をコンピュータに実行させるためのプログラム。しかしながら、近年ハッシュ関数に対する攻撃が提案され、その安全性が毀損されている。一方、安全性の高い新たなハッシュ関数も設計されているが、従来型のハッシュ関数と比べて数倍の処理時間がかかるという問題がある。そこで、本発明は、上述の課題に鑑みてなされたものであり、安全性の高いハッシュ関数を実現するハッシュ関数装置、ハッシュ関数装置の処理方法およびプログラムを提供することを目的とする。本発明は、上記の課題を解決するために、以下の事項を提案している。なお、理解を容易にするために、本発明の実施形態に対応する符号を付して説明するが、これに限定されるものではない。1本発明は、ストリーム暗号器とハッシュ関数器とからなるブロックを多段に接続してなるハッシュ関数装置であって、初段のストリーム暗号器例えば、図1のストリーム暗号器10aに相当が、鍵系列を出力する鍵系列出力手段を備え、初段のハッシュ関数器例えば、図1のハッシュ関数器20aに相当の入力メッセージをブロックの段数で分割し、該分割された入力メッセージに該出力された鍵系列を結合してメッセージデータを生成するメッセージデータ生成手段と、前記初段のハッシュ関数器が、前記生成されたメッセージデータと初期鍵とを入力してハッシュ値を演算するハッシュ値演算手段と、前記初段以降のハッシュ関数器例えば、図1のハッシュ関数器20b、20cに相当が、前段のハッシュ関数器が生成したハッシュ値とストリーム暗号器が生成するメッセージデータとを入力して、演算したハッシュ値を後段のハッシュ関数器に出力し、最終段のハッシュ関数器例えば、図1のハッシュ関数器20cに相当のハッシュ値を出力ハッシュ値とすることを特徴とするハッシュ関数装置を提案している。この発明によれば、初段のストリーム暗号器の鍵系列出力手段は、鍵系列を出力する。メッセージデータ生成手段は、初段のハッシュ関数器の入力メッセージをブロックの段数で分割し、その分割された入力メッセージにその出力された鍵系列を結合してメッセージデータを生成する。初段のハッシュ関数器のハッシュ値演算手段は、生成されたメッセージデータと初期鍵とを入力してハッシュ値を演算する。そして、初段以降のハッシュ関数器は、前段のハッシュ関数器が生成したハッシュ値とストリーム暗号器が生成するメッセージデータとを入力して、演算したハッシュ値を後段のハッシュ関数器に出力し、最終段のハッシュ関数器のハッシュ値を出力ハッシュ値とする。したがって、従来型のハッシュ関数とストリーム暗号を組み合わせることにより、高速な処理を実現するとともに、安全性の高いハッシュ関数装置を実現できる。また、メッセージと鍵系列とを結合してハッシュ関数器に入力することにより、第三者がアルゴリズムを推定できないため、安全性が高まる。2本発明は、1のハッシュ関数装置について、通常のハッシュ関数として用いる場合に、各ストリーム暗号器の内部状態が固定値となることを特徴とするハッシュ関数装置を提案している。この発明によれば、通常のハッシュ関数として用いる場合に、各ストリーム暗号器の内部状態が固定値となる。したがって、同じメッセージについては、同じハッシュ値が出力される。3本発明は、1のハッシュ関数装置について、鍵付きハッシュ関数として用いる場合に、各ストリーム暗号器に鍵を入力することを特徴とするハッシュ関数装置を提案している。この発明によれば、鍵付きハッシュ関数として用いる場合に、各ストリーム暗号器に鍵を入力する。これにより、初期化処理が行われ、通常のハッシュ関数と同様に、同じメッセージについては、同じハッシュ値が出力される。4本発明は、1から3のハッシュ関数装置について、前記ストリーム暗号器が、鍵系列を出力するたびに、異なる新たな鍵系列を出力することを特徴とするハッシュ関数装置を提案している。この発明によれば、ストリーム暗号器が、鍵系列を出力するたびに、異なる新たな鍵系列を出力する。したがって、これにより、さらに、安全性を高めることができる。5本発明は、1から4のハッシュ関数装置について、入力する鍵系列の長さが所定の長さよりも短い場合に、前記メッセージデータ生成手段が不足したデータ分、固定パターンのパディング処理を行うことを特徴とするハッシュ関数装置を提案している。この発明によれば、メッセージデータ生成手段が、入力する鍵系列の長さが所定の長さよりも短い場合に、不足したデータ分、固定パターンのパディング処理を行う。したがって、同じメッセージについては、同じハッシュ値が出力される。6本発明は、ストリーム暗号器とハッシュ関数器とからなるブロックを多段に接続してなり、通常のハッシュ関数として用いられるハッシュ関数装置の処理方法であって、初段のストリーム暗号器が、鍵系列を出力する第1のステップ例えば、図3のステップS101に相当と、初段のハッシュ関数器の入力メッセージをブロックの段数で分割する第2のステップ例えば、図3のステップS101に相当と、該分割された入力メッセージに該出力された鍵系列を結合してメッセージデータを生成する第3のステップ例えば、図3のステップS101に相当と、前記初段のハッシュ関数器が、前記生成されたメッセージデータと初期鍵とを入力してハッシュ値を演算する第4のステップ例えば、図3のステップS101に相当と、前記初段以降のハッシュ関数器が、前段のハッシュ関数器が生成したハッシュ値とストリーム暗号器が生成するメッセージデータとを入力して、演算したハッシュ値を後段のハッシュ関数器に出力する第5のステップ例えば、図3のステップS101に相当と、最終段のハッシュ関数器のハッシュ値を出力ハッシュ値とする第6のステップ例えば、図3のステップS101に相当と、を備えたことを特徴とするハッシュ関数装置の処理方法を提案している。この発明によれば、初段のストリーム暗号器が、鍵系列を出力し、初段のハッシュ関数器の入力メッセージをブロックの段数で分割する。次に、分割された入力メッセージに出力された鍵系列を結合してメッセージデータを生成し、前記初段のハッシュ関数器が、生成されたメッセージデータと初期鍵とを入力してハッシュ値を演算する。そして、初段以降のハッシュ関数器が、前段のハッシュ関数器が生成したハッシュ値とストリーム暗号器が生成するメッセージデータとを入力して、演算したハッシュ値を後段のハッシュ関数器に出力し、最終段のハッシュ関数器のハッシュ値を出力ハッシュ値とする。したがって、従来型のハッシュ関数とストリーム暗号を組み合わせることにより、高速な処理を実現するとともに、安全性の高いハッシュ関数装置を実現できる。また、メッセージと鍵系列とを結合してハッシュ関数器に入力することにより、第三者がアルゴリズムを推定できないため、安全性が高まる。7本発明は、6のハッシュ関数装置の処理方法について、入力する鍵系列の長さが所定の長さよりも短い場合に、前記第3のステップにおいて、不足したデータ分、固定パターンのパディング処理を行うことを特徴とするハッシュ関数装置の処理方法を提案している。この発明によれば、入力する鍵系列の長さが所定の長さよりも短い場合に、第3のステップにおいて、不足したデータ分、固定パターンのパディング処理を行う。したがって、同じメッセージについては、同じハッシュ値が出力される。8本発明は、ストリーム暗号器とハッシュ関数器とからなるブロックを多段に接続してなり、鍵付きハッシュ関数として用いられるハッシュ関数装置の処理方法であって、各ストリーム暗号器に鍵を入力し、初期化処理を行う第1のステップ例えば、図5のステップS201に相当と、初段のストリーム暗号器が、鍵系列を出力する第2のステップ例えば、図5のステップS202に相当と、初段のハッシュ関数器の入力メッセージをブロックの段数で分割する第3のステップ例えば、図5のステップS203に相当と、該分割された入力メッセージに該出力された鍵系列を結合してメッセージデータを生成する第4のステップ例えば、図5のステップS204に相当と、前記初段のハッシュ関数器が、前記生成されたメッセージデータと初期鍵とを入力してハッシュ値を演算する第5のステップ例えば、図5のステップS205に相当と、前記初段以降のハッシュ関数器が、前段のハッシュ関数器が生成したハッシュ値とストリーム暗号器が生成するメッセージデータとを入力して、演算したハッシュ値を後段のハッシュ関数器に出力する第6のステップ例えば、図5のステップS206に相当と、最終段のハッシュ関数器のハッシュ値を出力ハッシュ値とする第7のステップ例えば、図5のステップS207に相当と、を備えたことを特徴とするハッシュ関数装置の処理方法を提案している。この発明によれば、各ストリーム暗号器に鍵を入力し、初期化処理を行い、初段のストリーム暗号器が、鍵系列を出力し、初段のハッシュ関数器の入力メッセージをブロックの段数で分割する。次に、分割された入力メッセージに出力された鍵系列を結合してメッセージデータを生成し、初段のハッシュ関数器が、生成されたメッセージデータと初期鍵とを入力してハッシュ値を演算する。そして、初段以降のハッシュ関数器が、前段のハッシュ関数器が生成したハッシュ値とストリーム暗号器が生成するメッセージデータとを入力して、演算したハッシュ値を後段のハッシュ関数器に出力し、最終段のハッシュ関数器のハッシュ値を出力ハッシュ値とする。したがって、従来型のハッシュ関数とストリーム暗号を組み合わせることにより、高速な処理を実現するとともに、安全性の高いハッシュ関数装置を実現できる。また、メッセージと鍵系列とを結合してハッシュ関数器に入力することにより、第三者がアルゴリズムを推定できないため、安全性が高まる。9本発明は、8のハッシュ関数装置の処理方法について、入力する鍵系列の長さが所定の長さよりも短い場合に、前記第4のステップにおいて、不足したデータ分、固定パターンのパディング処理を行うことを特徴とするハッシュ関数装置の処理方法を提案している。この発明によれば、入力する鍵系列の長さが所定の長さよりも短い場合に、第4のステップにおいて、不足したデータ分、固定パターンのパディング処理を行う。したがって、同じメッセージについては、同じハッシュ値が出力される。10本発明は、ストリーム暗号器とハッシュ関数器とからなるブロックを多段に接続してなり、通常のハッシュ関数として用いられるハッシュ関数装置の処理方法をコンピュータに実行させるためのプログラムであって、初段のストリーム暗号器が、鍵系列を出力する第1のステップ例えば、図3のステップS101に相当と、初段のハッシュ関数器の入力メッセージをブロックの段数で分割する第2のステップ例えば、図3のステップS101に相当と、該分割された入力メッセージに該出力された鍵系列を結合してメッセージデータを生成する第3のステップ例えば、図3のステップS101に相当と、前記初段のハッシュ関数器が、前記生成されたメッセージデータと初期鍵とを入力してハッシュ値を演算する第4のステップ例えば、図3のステップS101に相当と、前記初段以降のハッシュ関数器が、前段のハッシュ関数器が生成したハッシュ値とストリーム暗号器が生成するメッセージデータとを入力して、演算したハッシュ値を後段のハッシュ関数器に出力する第5のステップ例えば、図3のステップS101に相当と、最終段のハッシュ関数器のハッシュ値を出力ハッシュ値とする第6のステップ例えば、図3のステップS101に相当と、をコンピュータに実行させるためのプログラムを提案している。この発明によれば、初段のストリーム暗号器が、鍵系列を出力し、初段のハッシュ関数器の入力メッセージをブロックの段数で分割する。次に、分割された入力メッセージに出力された鍵系列を結合してメッセージデータを生成し、前記初段のハッシュ関数器が、生成されたメッセージデータと初期鍵とを入力してハッシュ値を演算する。そして、初段以降のハッシュ関数器が、前段のハッシュ関数器が生成したハッシュ値とストリーム暗号器が生成するメッセージデータとを入力して、演算したハッシュ値を後段のハッシュ関数器に出力し、最終段のハッシュ関数器のハッシュ値を出力ハッシュ値とする。したがって、従来型のハッシュ関数とストリーム暗号を組み合わせることにより、高速な処理を実現するとともに、安全性の高いハッシュ関数装置を実現できる。また、メッセージと鍵系列とを結合してハッシュ関数器に入力することにより、第三者がアルゴリズムを推定できないため、安全性が高まる。11本発明は、ストリーム暗号器とハッシュ関数器とからなるブロックを多段に接続してなり、鍵付きハッシュ関数として用いられるハッシュ関数装置の処理方法をコンピュータに実行させるためのプログラムであって、各ストリーム暗号器に鍵を入力し、初期化処理を行う第1のステップ例えば、図5のステップS201に相当と、初段のストリーム暗号器が、鍵系列を出力する第2のステップ例えば、図5のステップS202に相当と、初段のハッシュ関数器の入力メッセージをブロックの段数で分割する第3のステップ例えば、図5のステップS203に相当と、該分割された入力メッセージに該出力された鍵系列を結合してメッセージデータを生成する第4のステップ例えば、図5のステップS204に相当と、前記初段のハッシュ関数器が、前記生成されたメッセージデータと初期鍵とを入力してハッシュ値を演算する第5のステップ例えば、図5のステップS205に相当と、前記初段以降のハッシュ関数器が、前段のハッシュ関数器が生成したハッシュ値とストリーム暗号器が生成するメッセージデータとを入力して、演算したハッシュ値を後段のハッシュ関数器に出力する第6のステップ例えば、図5のステップS206に相当と、最終段のハッシュ関数器のハッシュ値を出力ハッシュ値とする第7のステップ例えば、図5のステップS207に相当と、をコンピュータに実行させるためのプログラムを提案している。この発明によれば、各ストリーム暗号器に鍵を入力し、初期化処理を行い、初段のストリーム暗号器が、鍵系列を出力し、初段のハッシュ関数器の入力メッセージをブロックの段数で分割する。次に、分割された入力メッセージに出力された鍵系列を結合してメッセージデータを生成し、初段のハッシュ関数器が、生成されたメッセージデータと初期鍵とを入力してハッシュ値を演算する。そして、初段以降のハッシュ関数器が、前段のハッシュ関数器が生成したハッシュ値とストリーム暗号器が生成するメッセージデータとを入力して、演算したハッシュ値を後段のハッシュ関数器に出力し、最終段のハッシュ関数器のハッシュ値を出力ハッシュ値とする。したがって、従来型のハッシュ関数とストリーム暗号を組み合わせることにより、高速な処理を実現するとともに、安全性の高いハッシュ関数装置を実現できる。また、メッセージと鍵系列とを結合してハッシュ関数器に入力することにより、第三者がアルゴリズムを推定できないため、安全性が高まる。本発明によれば、従来型のハッシュ関数とストリーム暗号を組み合わせることにより、高速な処理を実現するとともに、安全性の高いハッシュ関数装置を実現できるという効果がある。以下、本発明の実施形態について、図面を用いて、詳細に説明する。なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。<第1の実施形態>本発明の第1の実施形態について、図1から図3を用いて説明する。本実施形態に係るハッシュ関数装置は、図1に示すように、ストリーム暗号器10a等とハッシュ関数器20a等から構成される機能ブロックが多段に結合されて構成されている。なお、本実施形態については、上記機能ブロックが3段結合されてなるハッシュ関数装置を示したが結合されるブロック数は、これに限定されるものではない。まず、初段の機能ブロックでは、通常のメッセージを段数により分割したメッセージにストリーム暗号器10aが生成する鍵系列が連結されて入力メッセージを構成する。ここで、図2に示すように、分割したメッセージと鍵系列とを連結したデータ長が所定のデータ長よりも短い場合には、固定のパターン図2のXXを用いて、パディング処理を行う。上記の処理は、次段以降の機能ブロックでも同様である。なお、ストリーム暗号器10aは、鍵系列を出力するたびに更新され、異なる鍵系列を出力する。また、本実施形態のように、通常のハッシュ関数として用いる場合には、ストリーム暗号器10aの内部状態は、固定値となる。上記の内容に関しては、次段以降のストリーム暗号器10b、10cにおいても同様である。ハッシュ関数器20aは、上述の入力メッセージと初期値IVとを入力してハッシュ値を出力する。出力されたハッシュ値は、次段のハッシュ関数器20bに入力される。次段の機能ブロックでは、通常のメッセージを段数により分割したメッセージにストリーム暗号器10bが生成する鍵系列が連結されて入力メッセージを構成する。ハッシュ関数器20bは、上述の入力メッセージとハッシュ関数器20aから入力するハッシュ値とを入力してハッシュ値を出力する。出力されたハッシュ値は、次段のハッシュ関数器20cに入力される。最終段の機能ブロックでは、通常のメッセージを段数により分割したメッセージにストリーム暗号器10cが生成する鍵系列が連結されて入力メッセージを構成する。ハッシュ関数器20cは、上述の入力メッセージとハッシュ関数器20bから入力するハッシュ値とを入力してハッシュ値を出力する。そして、このハッシュ値が、ハッシュ関数装置の出力値となる。<ハッシュ関数装置の処理>図3を用いて、本実施形態に係るハッシュ関数装置の処理について説明する。まず、初段のストリーム暗号器10aが、鍵系列を出力しステップS101、初段のハッシュ関数器20aの入力メッセージをブロックの段数で分割するステップS102。分割された入力メッセージに出力された鍵系列を結合してメッセージデータを生成しステップS103、初段のハッシュ関数器20aが、生成されたメッセージデータと初期鍵とを入力してハッシュ値を演算するステップS104。そして、初段以降のハッシュ関数器20b、20cが、前段のハッシュ関数器20aが生成したハッシュ値とストリーム暗号器が生成するメッセージデータとを入力して、演算したハッシュ値を後段のハッシュ関数器に出力しステップS105、最終段のハッシュ関数器20cのハッシュ値を出力ハッシュ値とするステップS106。以上、説明したように、本実施形態によれば、従来型のハッシュ関数とストリーム暗号を組み合わせることにより、高速な処理を実現するとともに、安全性の高いハッシュ関数装置を実現できる。また、メッセージと鍵系列とを結合してハッシュ関数器に入力することにより、第三者がアルゴリズムを推定できないため、安全性が高まる。<第2の実施形態>本発明の第2の実施形態について、図4および図5を用いて説明する。本実施形態のハッシュ関数装置の基本構成は、第1の実施形態と同様であるが、本実施形態においては、ハッシュ関数装置を鍵付きハッシュ関数として用いる場合を示している。したがって、第1の実施形態と同一の部分については、詳細な説明を省略する。本実施形態に係るストリーム暗号器11a~11cは、外部から鍵を入力し、鍵系列の生成を行う前に、初期化処理を実行する。その他の動作については、第1の実施形態と同様である。<ハッシュ関数装置の処理>図5を用いて、本実施形態に係るハッシュ関数装置の処理について説明する。まず、各ストリーム暗号器11a、11b、11cに鍵を入力し、初期化処理を行うステップS201。次に、初段のストリーム暗号器11aが、鍵系列を出力しステップS202、初段のハッシュ関数器20bの入力メッセージをブロックの段数で分割するステップS203。分割された入力メッセージに出力された鍵系列を結合してメッセージデータを生成しステップS204、初段のハッシュ関数器20aが、生成されたメッセージデータと初期鍵とを入力してハッシュ値を演算するステップS205。そして、初段以降のハッシュ関数器20b、20cが、前段のハッシュ関数器20aが生成したハッシュ値とストリーム暗号器が生成するメッセージデータとを入力して、演算したハッシュ値を後段のハッシュ関数器に出力しステップS206、最終段のハッシュ関数器20cのハッシュ値を出力ハッシュ値とするステップS207。以上、説明したように、本実施形態によれば、従来型のハッシュ関数とストリーム暗号を組み合わせることにより、高速な処理を実現するとともに、安全性の高いハッシュ関数装置を実現できる。また、メッセージと鍵系列とを結合してハッシュ関数器に入力することにより、第三者がアルゴリズムを推定できないため、安全性が高まる。なお、ハッシュ関数装置の処理をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムをハッシュ関数装置に読み込ませ、実行することによって本発明のハッシュ関数装置を実現することができる。ここでいうコンピュータシステムとは、OSや周辺装置等のハードウェアを含む。また、コンピュータシステムは、WWWWorldWideWebシステムを利用している場合であれば、ホームページ提供環境あるいは表示環境も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されても良い。ここで、プログラムを伝送する伝送媒体は、インターネット等のネットワーク通信網や電話回線等の通信回線通信線のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル差分プログラムであっても良い。以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。