"入力したデータを出力データとして出力するまでの処理をp個に分割したそれぞれの処理を順次行う第1処理部から第p処理部p≧2を備え、第i処理部p-1≧i≧1は、それぞれmビットのデータを格納するAレジスタ、Bレジスタ、Cレジスタと、m×nビットのデータをmビットずつに分割したn個のデータを格納する分割レジスタと、所定のパラメータを記憶するパラメータレジスタと、第i-1処理部の算出した所定のデータを前算出データとして記憶する前算出データレジスタと、分割レジスタに格納されているn個のデータの少なくともいずれかに基づきmビットのデータを求める第1演算器と、Aレジスタのデータと、Bレジスタのデータと、Cレジスタのデータとに基づいて所定の論理演算を行ってmビットのデータを求める第2演算器と、第1演算器によるmビットのデータと第2演算器によるmビットのデータとを加算して加算したデータを第i1処理部のための前算出データとして第i1処理部の前算出データレジスタに記憶させる第2加算器とを備えたことを特徴とする演算装置。複数のサイクルにより演算を行う演算装置において、それぞれmビットのデータを格納するAレジスタ、Bレジスタ、Cレジスタと、m×nビットのデータをmビットずつに分割したn個のデータを格納する分割レジスタと、所定のパラメータを記憶するパラメータレジスタと、前のサイクルにおいて算出した所定のデータを前算出データとして記憶する前算出データレジスタと、分割レジスタに格納されているn個のデータの少なくともいずれかに基づきmビットのデータを求める第1演算器と、Aレジスタのデータと、Bレジスタのデータと、Cレジスタのデータとに基づいて所定の論理演算を行ってmビットのデータを求める第2演算器と、第1演算器によるmビットのデータと第2演算器によるmビットのデータとを加算して加算したデータを次のサイクルのための前算出データとして前算出レジスタに記憶させる第2加算器とを備えたことを特徴とする演算装置。入力したデータを出力データとして出力するまでの処理をp個に分割したそれぞれの処理を順次行う第1処理部から第p処理部p≧2を備えるとともに、所定の処理部を示す第i処理部ただし、p-1≧i≧1は、データを格納する第iレジスタと、第iレジスタが格納するデータを入力してデータ処理を行う第i分割処理単位部と、第i分割処理単位部の処理を前処理と後処理とに分割して前処理の結果を前処理データとして入力して格納し後処理のために出力する中間レジスタとを備える演算装置において、第iレジスタは、それぞれmビットのデータを格納するAレジスタ、Bレジスタ、Cレジスタと、m×nビットのデータをmビットずつに分割したn個のデータを格納する分割レジスタと、所定のパラメータを記憶するパラメータレジスタと、第i-1処理部の算出した所定のデータを前算出データとして記憶する前算出データレジスタとを備え、第i分割処理単位部は、前処理として、分割レジスタに記憶されたn個のデータの少なくともいずれかに基づきmビットのデータを求めて前処理データとして中間レジスタに出力する第1演算器と、前処理として、Aレジスタのデータと、Bレジスタのデータと、Cレジスタのデータとに基づいて所定の論理演算を行ってmビットのデータを求めて前処理データとして中間レジスタに出力する第2演算器と、後処理として、中間レジスタが格納した第1演算器によるmビットのデータと、第2演算器によるmビットのデータとを加算して、加算したデータを第i1処理部のための前算出データとして第i1処理部の前算出データレジスタに記憶させる第2加算器とを備えたことを特徴とする演算装置。データを格納する格納レジスタと、格納レジスタが格納するデータを入力してデータ処理を行うデータ処理部と、データ処理部の処理を前処理と後処理とに分割して前処理の結果を前処理データとして入力して格納し後処理のために出力する中間レジスタとを備えた、複数のサイクルにより演算を行う演算装置において、格納レジスタは、それぞれmビットのデータを格納するAレジスタ、Bレジスタ、Cレジスタと、m×nビットのデータをmビットずつに分割したn個のデータを格納する分割レジスタと、所定のパラメータを記憶するパラメータレジスタと、前のサイクルにおいて算出した所定のデータを前算出データとして記憶する前算出データレジスタと、を備え、データ処理部は、前処理として、分割レジスタに記憶されたn個のデータの少なくともいずれかに基づきmビットのデータを求めて前処理データとして中間レジスタに出力する第1演算器と、前処理として、Aレジスタのデータと、Bレジスタのデータと、Cレジスタのデータとに基づいて所定の論理演算を行ってmビットのデータを求めて前処理データとして中間レジスタに出力する第2演算器と、後処理として、中間レジスタが格納した第1演算器によるmビットのデータと、第2演算器によるmビットのデータとを加算して、加算したデータを次のサイクルのための前算出データとして前記前算出データレジスタに記憶させる第2加算器とを備えたことを特徴とする演算装置。本発明は、複数のデータに対してハッシュ処理を並列に可能であり、かつ前記例で挙げたp個の並列実装と比較して回路面積が小さく、かつ各データに対する処理速度が向上するハッシュ値算出装置の提供を目的とする。また、ハードウェア実装におけるレジスタ間の回路遅延を短縮し、かつ処理に必要なサイクルの増加を抑制したハッシュ値算出装置の提供を目的とする。また、繰り返し処理においても高速に動作するハッシュ値算出装置の提供を目的とする。本発明のハッシュ値算出装置は、所定のハッシュアルゴリズムを用いることにより、入力したデータに対するハッシュ値を算出するハッシュ値算出装置において、入力したデータからハッシュ値を算出するまでの処理をp個に分割したそれぞれぞれの処理を順次行う第1処理部から第p処理部ただし、p≧2を備えたことを特徴とする。本発明により、複数のデータに対してハッシュ処理の並列処理を行うことができ、かつ、回路の実装面積の小さいハッシュ値算出装置を提供することができる。実施の形態1.図1~図6を用いて実施の形態1に係るハッシュ値算出装置100ついて説明する。実施の形態1に係るハッシュ値算出装置100は、所定のハッシュアルゴリズムを用いることにより、入力したデータに対するハッシュ値を算出するハッシュ値算出装置である。ハッシュ値算出装置100は、入力したデータからハッシュ値を算出するまでの処理をp個に分割したそれぞれぞれの処理を順次行う第1処理部から第p処理部ただし、p≧4を備える。これら第1処理部から第p処理部により、複数の入力データに対してパイプライン処理を行うことで、各入力データのハッシュ値を算出することを特徴とする。本実施の形態1では、ハッシュ値算出装置100は、所定のハッシュアルゴリズムとして、前記従来の技術で説明したSHA-1を用いることを想定する。図1は、実施の形態1に係るハッシュ値算出装置100の構成を示す図である。ハッシュ値算出装置100は、SHA-1のステップ0~ステップ79及び初期値の加算処理に対応した処理部として、第1処理部から、第p処理部までを備える。一つのステップに一つの処理部が対応する場合、初期値との加算処理はステップ79に含めるとpは80となり初期値との加算処理はステップ79に含める、第80処理部まで備える。また、一つのステップに2つの処理を対応させてもよく、その場合は、pは160となる。一つのステップにn個の処理を対応させる場合は、pは80×n個となり、80n個の処理部を備える。ハッシュ値算出装置100の第1処理部は、第1レジスタと第1分割処理単位部を備える。同様に、第1処理部以降の各処理部は、レジスタと分割処理単位部を備える。第1レジスタは、入力データを保持して第1分割処理単位部に入力データを渡す。第1分割処理単位部は、入力データを処理し、処理結果を第1処理データとして第2処理部に出力する。第2処理部より以降は、第i処理部は、一つ前の処理部である第i-1処理部の出力した第i-1処理データを入力して処理し、処理した結果を第i処理データとして出力する。最終の処理部である第p処理部は、一つ前の処理部である第p-1処理部の出力した第p-1処理データを入力し、入力した第p-1処理データに基づいて、入力したデータに対応するハッシュ値を算出して出力する。次に、図1に対応する回路の構成例を説明する。図2は、図1に対応するSHA-1によりハッシュ値を算出する回路の構成例である。図2は、従来例を示す図25の部分処理回路610を、分割処理単位部として使用した例である。したがって、第t1処理部は、部分処理回路610と構成が同様である。図25の場合は、処理結果が繰り返しサイクルとして処理されるのに対して、図2の回路では、処理結果が次の処理部に出力される。これにより、後述のようにパイプライン処理を行うことができる。第t1処理部は、図1の一つの処理部に対応する。第t1処理部におけるt1は、SHA-1のtステップに対応する処理を行う処理部であることを示す。SHA-1では、入力データからハッシュ値を算出する場合、0~79最初のステップを0とおいた。の80ステップの処理を行う。SHA-1の80のステップについては最初のステップを0ステップとしているが、処理部については最初の処理部を第1処理部としているため、tステップにはt1処理部が対応する。次に、図3~図5を用いて、ハッシュ値算出装置100によるパイプライン処理について簡単に説明する。図3は、説明を簡単にするために、ハッシュ値算出装置100が第1処理部から第4処理部で構成されている場合p=4の場合を想定した図である。図示していなが、第1処理部は、第1レジスタと第1分割処理単位部を備える。第2処理部~第4処理部についても同様である。図4は、第1処理部から第4処理部で構成された場合のハッシュ値算出装置100によりハッシュ値を求める入力データD1~D4を示す図である。入力データD1~D4は、それぞれ512ビットである。図5は、入力データD1~D4を順次入力した場合のパイプライン処理を示す図である。表の数字はデータを表す。例えば、1はD1、2はD2を表す。また1はD1のハッシュ値HD1を表す。各列は、図3のハッシュ値算出装置100を示している。1列目は、ハッシュ値算出装置100にD1を入力した状態を示している。2列目は、ハッシュ値算出装置100にD1を入力後、さらに、D2を入力した状態を示している。3列目以降も同様である。このように、各列は、順次データを入力した場合のハッシュ値算出装置100による処理を時系列で表している。1つ目の入力データD1は、第1レジスタ図示していないに格納される。次のステップ2列目で、2つ目の入力データD2が第1レジスタに格納されると同時に、D1に対して第1分割処理単位部にて処理された第1処理データが、第2レジスタ図示していないに格納される。以下これを繰り返し、4個目の入力データD4が第1レジスタに格納されると同時に、D1のデータに対する第3分割処理単位部より処理されたデータが第4レジスタ図示していないに格納される。次のステップ5列目で、D1のデータに対するハッシュ値HD1が出力される。以下連続してD2からD4のハッシュ値が出力される。このように、ハッシュ値HD1~ハッシュ値HD4が各ステップの処理毎に出力されるので、従来の複数サイクルの処理でハッシュ値を算出する場合に対して、従来の1サイクルでハッシュ値を算出することと等価な処理が可能となる。実施の形態1に係るハッシュ値算出装置100は、第1処理部から第p処理部を備えたので、複数のデータを並列にパイプライン処理を行うことができる。実施の形態2.次に、図6~図11を用いて実施の形態2に係るハッシュ値算出装置200ついて説明する。実施の形態1のハッシュ値算出装置100に対し、実施の形態2に係るハッシュ値算出装置200は、最終の処理部である第p処理部の算出したハッシュ値を第1処理部にフィードバック出力する。そして、第1処理部は、第p処理部のフィードバックによるハッシュ値と後続データを入力するとともに、フィードバックによるハッシュ値に基づいて後続データを処理し、処理した結果を第1処理データとして出力することを特徴とする。ハッシュ値算出装置200も、ハッシュ値算出装置100と同様に、SHA-1を用いる。図6は、ハッシュ値算出装置200に入力される入力データの一例である。D1はD1,1~D1,80の80個のデータからなっている。本実施の形態2では、D1は512×80ビットとする。また、D1,1~D1,80は、それぞれ、512ビットとする。D2からD80についてもデータの構成はD1と同様とする。SHA-1においては、例えば、512×80ビットのデータであるD1のハッシュ値を求める場合、D1,1のハッシュ値HD1,1を求め、HD1,1を入力にフィードバックするとともに、後続データとしてD1,2を入力し、HD1,1を用いてD1,2を処理する必要がある。ハッシュ値算出装置200は、第p処理部の出力するハッシュ値を第1処理部にフィードバックすることにより後続データを処理可能とし、512×80ビットのデータの処理を可能とする。図7は、実施の形態2に係るハッシュ値算出装置200の構成を示す図である。図1に示したハッシュ値算出装置100に対して、フィードバック用ビット付与部210、フィードバック回路220を新たに備えた構成である。図8は、ハッシュ値算出装置200によるフィードバックを説明するための入力データ201を示す図である。ハッシュ値算出装置200は、図6に示したデータの入力を想定しているが、説明の簡略ため、図8のデータを用いて説明する。D1は512×2ビットのデータである。D1,1とD1,2とは、512ビットのデータである。D2~D4についてもデータ構成はD1と同様である。図9は、ハッシュ値算出装置100のフィードバックを説明する図である。図9は、実施の形態1の図5に対応する。表の数字はデータを示す。例えば、11はD1,1を示す。また、11はD1,1のハッシュ値HD1,1を示す。図9において、5列目では、D1,1のハッシュ値HD1,1が出力されるとともに、D1,2が第1処理部に入力される。この場合、D1,2の処理にはハッシュ値HD1,1が必要であるため、フィードバック回路220は、ハッシュ値HD1,1を第1処理部にフィードバックする。フィードバック回路220は、同様に、D2,2、D3,2、D4,2、が第1処理部に入力される場合につても、これらの入力データに対応するハッシュ値HD2,2、HD3,2、HD4,2を第1処理部にフィードバックする。次に、図10、図11を用いて、フィードバックを必要とするかどうかのビットを後続データに付与する場合について説明する。図10は入力データ202を示す。入力データ202の特徴は、D1~D4のビット数が異なることである。すなわち、D1=512×3ビット,D2=512×2ビット,D3=512×4ビット,D4=512×2ビット,である。D1,1、D2,1等は、512ビットである。図11は、フィードバック用ビット付与部210がフィードバック用のビットを付与する場合を説明する図である。表の数字は、図9の場合と同様である。フィードバック用ビット付与部210は、後続の入力データに対して、フィードバックが不要の場合、0を付与する。一方、フィードバックが必要な場合は、1を付与する。図11において、1列~4列の第1処理部には、フィードバックがされていない。これは、フィードバック用ビット付与部210が、D1,1、D2,1、D3,1、D4,1の各データについて、1ビットのデータ0を付与したからである。一方、5列目~9列目、11列、及び15列の第1処理部には、出力したハッシュ値がフィードバックされている。これは、フィードバック用ビット付与部210が、D1,2、D2,2、D3,2、D4,2及び、D3,3、D3,4の各データに、1ビットのデータ1を付与したからである。なお、図11において、ハッチングのかけられた10列目、及び12列~14列の第1処理部分には所定の数値が入力される。実施の形態2に係るハッシュ値算出装置200は、m×qビットの入力データに対しては、p個のレジスタを通過後の処理値を1段目のレジスタにフィードバックし、同時に次のmビットのデータを入力して処理することでm×qビットに対しても処理可能なことを特徴とする。実施の形態2に係るハッシュ値算出装置200は、p個の異なる長さのデータにそれぞれに、フィードバックの可否を示す1ビットのデータを追加し、p個の分割処理終了後に前記1ビットのデータにより、フィードバックするもしくは、そのまま出力するという判定を行う制御方式により、p個の異なる長さのデータに対して並列処理を行うことを特徴とする。実施の形態2に係るハッシュ値算出装置200においては、第p処理部の出力するハッシュ値を第1処理部にフィードバックするので、このハッシュ値を用いて後続の入力データをハッシュ処理することができる。実施の形態2に係るハッシュ値算出装置200においては、フィードバック用ビット付与部210は、第1処理部への入力データに対して、第p処理部からのハッシュ値のフィードバックが必要かどうかを示すビットを付与するので、それぞれことなる長さからなる複数のデータのハッシュ値を算出することができる。実施の形態3.図12~図17を用いて実施の形態3に係るハッシュ値算出装置300ついて説明する。実施の形態1のハッシュ値算出装置100に対し、ハッシュ値算出装置300は、第p処理部の出力したハッシュ値を記憶し、第1処理部への後続データの入力に合わせて、記憶したハッシュ値を第1処理部に出力するハッシュ値記憶部を備えたことを特徴とする。SHA-1は、512ビットのデータを入力データとして入力しハッシュ値を算出する場合、図1においてp=80であれば、入力するデータは、図6に示すようにD1~D80の80個の入力データが必要になる。すなわち、実施の形態1、実施の形態2では、フィードバックの必要性から、処理部の数pの数と同じデータ数D1~Dpに対して並列処理が可能である。一方、実際の装置では、分割処理数pと並列に処理したいデータ数xが異なる場合がある。特に分割処理数pに対して並列処理を行うデータ数xがp<xの場合、そのままでは処理ができない。そこで、図12の構成とすることにより、わずかな回路面積の増加で対応可能となる。次に詳しく説明する。図12は、図7のハッシュ値算出装置200に対して、ハッシュ値を記憶するメモリ310ハッシュ値記憶部を備えた構成である。ハッシュ処理の出力を深さk=x-pのメモリ310にいったん格納し、格納したデータをフィードバックデータとして参照する場合には、メモリ310から読み出して用いる。格納されたデータを参照するタイミングは格納されてからkサイクル後であり、参照を必要としない場合は、kサイクル後に上書きされる。このような構成をとることで、使用できるメモリサイズが許す限り、任意のx=pk個からなるデータに対して並列処理が可能となる。次に、図13を用いて具体的に説明する。図13はハッシュ値算出装置300を第1処理部と第2処理部とからなる簡略した構成である。表の数字は図9と同様である。図13のハッシュ値算出装置300には図8の入力データ201が入力されるとする。図13に示すハッシュ値算出装置300には、メモリ310を備えることにより、第2処理部からのハッシュ値の出力を格納することにより、後続データのためにフィードバックを行うことが可能となる。すなわち、例えば、D1,2についてみると、D1,2の処理にはD1,1のハッシュ値HD1,1が必要である。そのため、2ステップに相当する深さk=2のメモリ310を備えることで、D1,2の入力に合わせてハッシュ値HD1,1をフィードバックすることが可能となる。他のD2,2、D3,2、D4,2についても同様である。次に、図14~図17を用いてWレジスタをラッチとメモリとを併用した構成の回路について説明する。図14、図15はラッチとメモリとのデータの読み出しの違いを説明するための図である。図14は、DATA1、DATA2、DATA3、DATA4をラッチに格納している。ラッチの場合は、これら4つのデータを同時に読み出すことができる。一方図15に示すように、図14の構成に対して、全体をメモリで構成する場合、メモリでは同時に読み出すことができるのは一つのデータに限られる。メモリで構成する場合は実装面積を低減することができるが、このように読み出せるデータが一つである。これを考慮して次のようなメモリ構成が考えられる。ハッシュアルゴリズムSHA-1、SHA-256、SHA-384、SHA-512では、内部状態を保持するレジスタA,B,C,D,E,{F,G,H}{}はSHA-256,SHA-384,SHA-512の場合と、入力データ及び入力データ同士の処理による中間値を保持するWレジスタの2系統に分けることができる。SHA-1のアルゴリズムにおいて、図16に示すように、Wレジスタについては、0~14ステップまでの15ステップは、Wレジスタの一部、図中左端のデータのみを参照し、他のデータは参照の必要がない。よって、同じ番号で示すW2、W14、W15、W0等のブロック全体をメモリに実装し、データを読み出す時間を参照が必要となるタイミングに合わせることで、ラッチによるシフトレジスタと等価な実装が可能である。同一の記憶容量を実現するために、ラッチと比較して、SRAMStaticRandomAccessMemoryもしくはDRAMDynamicRandomAccessMemory等のメモリは1/5以下の面積で構成することが可能となる。また、各第1~第pの各処理部の備えるWレジスタに対する読み出しに必要な配線数はラッチによる構成の場合、各レジスタから読み出すため、16本W0~W15必要であったが、上記の構成とすることで1クロックあたり1アドレスのみの読み出しであるため1本となり、配線コストは1/16になる。同様の構成を16ステップ以降にも適用可能である。図17に示すように、SHA-1のステップ毎にレジスタWから4つのデータを参照し、処理する必要がある。その他のデータについては参照が行われないため、参照が必要となるまでのブロックをまとめてメモリとして実装する。実施の形態3に係るハッシュ値算出装置300は、メモリ310を備えたので、ハッシュ値を求めようとする入力データの数が装置のステップ数よりも多い場合でも、入力データのハッシュ値を求めることができる。実施の形態4.次に、図18~図23を用いて実施の形態4に係るハッシュ値算出装置ついて説明する。実施の形態4は、各処理部の分割処理単位部に対応するSHA-1アルゴリズムのstepfunctionを等価変形し、回路遅延の削減を図る構成である。この等価変形に対応するハッシュ値算出装置としてハッシュ値算出装置400、500、600、700について説明する。まず、分割処理単位部について説明する。分割処理単位部は、1レジスタ間の遅延がほぼ等しくなる。2バス幅ができるだけ狭い処理時にステージを切る。の2つの条件を満たすことが好ましい。1は図1の構成の場合、各分割処理単位部の回路遅延の最大値がハッシュ値算出装置全体の処理性能を決定するため、無駄のない処理を行うための条件になる。2は回路全体に必要なレジスタ量に影響するためである。よって、理想的な分割処理単位の1つとしてハッシュアルゴリズムのstepfunction毎の分割がある。図18は、SHA-1アルゴリズムに対するstepfunction毎の分割よる分割回路の構成を備えたハッシュ値算出装置400の構成図である。図18の構成は後述するが、この構成は、stepfunctionを以下のように等価変形し、回路遅延の削減を図っている。まず、以下に説明するstepfunctionにおける、W0~W15の意味を説明する。W0~W15は、W512ビットを格納するWレジスタを左から順に32ビット毎に分割したものを示す。一番左最上位ワードがW0で,一番右最下位ワードがW15である。図14、あるいは図15で示したように、A,B,C,D,Eのデータと演算するのは、どのステップの分割処理単位部においても,一番左のW0のみである。逆にいうと必ずA,B,C,D,Eとの演算に用いるデータが一番左のW0に格納されている。例えば,15ステップ目にはWt=W15がW0の位置に格納されている。つまり、Wt:tステップ目にA,B,C,D,Eとの演算に用いるWの値32bit、Wi:i番目の位置に格納されているWの値を示す。inputAin,Bin,Cin,Din,Ein,W0in~W15in,Wftinそれぞれ32bitoutputAout,Bout,Cout,Dotu,Eout,W0out~W15out,Wftoutそれぞれ32bit[stepfunction]Aout=Ain<<<5EinWftinKtBout=AinCout=Bin<<<30Dout=CinEout=Dinif0≦t≦15{Wiout=Wi1in0≦i≦14W15out=W0in}elseif16≦t≦79{W0out=W1in^W3in^W9in^W14in<<<1Wiout=Wi1in1≦i≦14W15out=W0in}Wftout=ftAin,Bin<<<30,CinW0outここで,tはステップ数を表し、0≦t≦19のとき、ftAin,Bin<<<30,Cin=AinBin<<<30|~AinCin,Kt=0x5A827999、20≦t≦39のとき、ftAin,Bin<<<30,Cin=Ain^Bin<<<30^Cin,Kt=0x6ED9EBA1、40≦t≦59のとき、ftAin,Bin<<<30,Cin=AinBin<<<30|AinCin|Bin<<<30Cin,Kt=0x8F1BBCDC、60≦t≦79のとき、ftAin,Bin<<<30,Cin=Ain^Bin<<<30^Cin,Kt=0xCA62C1D6、と定義される。最後に、各変数A,B,C,D,Eに初期値を加算する。図18におけるハッシュ値算出装置400の第t1処理部505は、第t1レジスタ520と第t1分割処理単位部510とを備えている。第t1処理部505は、図1の第1処理部から第p処理部の一つを示しており、第t1レジスタ520、及び第t1分割処理単位部510は、図1のいずれかの処理部のレジスタとその分割処理単位部に該当する。第t1レジスタ520は、上記等価変形したstepfunctionにおけるA、B、C、D、Eのデータを格納するABCDEレジスタ、所定のパラメータであるK値を記憶するKレジスタパラメータレジスタ、後述するWfレジスタ前算出データレジスタ、及び512ビットの入力データを16分割した32ビットずつのデータをW0~W15のレジスタに格納する全体で512ビットのWレジスタ分割レジスタを備える。第t1分割処理単位部510は、加算器11第1加算器、加算器12第2加算器、加算器13、加算器14、XOR演算器516第1演算器及び前算出f演算器515第2演算器を備える。図19は、上記等価変形したstepfunctionの特徴を説明するための図である。簡単のため、t=1のステップ、t=2のステップにおける各処理部すなわち、第2処理部と第3処理部を図示して説明する。SHA-1では、A3に格納されるデータは、A3=A2<<<5f2B2,C2,D2E2K2W02=A2<<<5E2K2f1A1,B1<<<30,C1W02=A2<<<5E2K2Wf2したがって、A3=A2<<<5E2K2Wf2式1ここで、Wf2=f1A1,B1<<<30,C1W02式2とおいた。Wf2は、図19において、次の処理を示している。1t=1のステップにおいて、A1,B1<<<30,及びC1を用いて前算出f演算器515で演算を行う。2t=1のステップにおいて、加算器512は、Wレジスタ523のW0に格納されるデータと、前記1における前算出f演算器515の演算結果とを加算して、レジスタWf2に格納する。3t=2のステップにおいて、加算器513は、A2<<<5とE2を加算して、加算器514に出力する。また、加算器511は、K2とWf2とを加算して、加算器514に出力する。4t=2のステップにおいて、加算器514は、加算器513の出力と、加算器511の出力とを加算して、A3に格納する。5t=2のステップにおいて、前算出f演算器515と、XOR演算器516と、加算器512とは、t=3のステップで使用するためのWf3=f2A2,B2<<<30,C2W03を、t=3のステップで使用する前算出データとして算出する。すなわち、t=2のステップにおいて前算出f演算器515は、A2,B2<<<30,及びC2を入力して演算処理を行い加算器512に出力する。また、t=2のステップにおいて、XOR演算器516はW03として格納されるべきデータを演算処理して生成し加算器512に出力する。加算器512は、前算出f演算器515からの出力と、XOR演算器516からの出力を加算して、Wf3=f2A2,B2<<<30,C2W03を算出して、Wf3レジスタに格納する。図19で説明したように、予め前のステップで前算出データWfを計算しておくことにより、そのステップにおける加算回数が、従来のSHA-1アルゴリズムより1回減っている。すなわち、t=2のステップについてみれば、第3レジスタから第4レジスタへのデータの流れを考える場合、図19においては、加算器を経る回数は最大2回である。例えば、加算器513から加算器514を経て第4レジスタに到達し、あるいは、加算器511から加算器513を経て第4レジスタに到達する。ところが、従来のSHA-1アルゴリズムによる図25の回路では最大で3つの加算器を経ることになる。図25では、データは加算器12、加算器13、加算器14を経てレジスタ20にフィードバックされる。このように、前記従来の技術で述べた[SHA―1アルゴリズム]と比較すると、図19では、Aout出力に必要な加算回数が1回減少する。一方、Wfttはステップを示すというパラメータが新たに追加されており、これは分割処理単位部毎に32ビット分のレジスタが増加することを意味する。Wft出力のパスは1回の論理演算と1回の整数加算分の回路遅延となる。前記の論理演算は[SHA-1アルゴリズム]に規定されている式からわかるように、加算に必要な回路遅延と比較すると、それ以下である。よって、図19の最大回路遅延は2回の整数加算分であることがわかる。これは、図24の回路構成と比較すると、加算処理1回分の回路遅延が減少するため、全体の処理性能が向上する。次に、上記図18、図19で示した処理単位を、図24に示した繰り返しのサイクルによりハッシュ値を求める装置に適用した場合のハッシュ値算出装置500を示す図である。回路の動作は、前記で説明した1~5と同様である。ハッシュ値算出装置500は、複数のサイクルの演算を行いハッシュ値を算出する。上記図18、図19で示した処理単位を用いているため、従来の[SHA-1アルゴリズム]を実施する回路である図25に対して演算回数が一回減少している。図21は、図18に示した構成を、より高速化する回路構成の例である。また、図22は、構成をわかりやすくするため図21の分割処理単位部を2段に表した図である。図18に示した分割処理単位部において、連続する演算間に中間レジスタ540を設けることで、最大回路遅延を加算1回分にしたものである。この場合、図18の構成と比較して、加算1回分の回路遅延が減少する。中間レジスタ540は、第t1分割処理単位部の処理を前処理と後処理に分けることにより回路遅延を防止する。前処理として、加算器513による加算処理、前算出f演算器515による演算処理、加算器511による加算処理及びXOR演算器516による演算処理がある。また、後処理として、加算器514による加算処理、及び加算器512による加算処理がある。ただし、図18の構成と比較して、約2倍のレジスタ量が必要となる。回路規模より処理性能を優先させる場合に有利な構成である。図23は、図21で示した中間レジスタ540を備える処理部を、図24に示した繰り返し処理に適用したハッシュ値算出装置700を示す図である。ハッシュ値算出装置700は、図20に示したハッシュ値算出装置500に中間レジスタ540を備えた構成である。図22に示したハッシュ値算出装置600と同様に、中間レジスタ540により、処理を前処理と後処理に分けることで処理の高速化を図ることができる。以上実施の形態1から実施の形態4においては、ハッシュアルゴリズムをSHA-1を想定したが、これに限ることなく、ハッシュアルゴリズムとして、SHA-256、SHA-384、SHA-512等に用いても構わない。実施の形態4に係るハッシュ値算出装置400は、前算出f演算器515を備えたので、加算回数を低減し処理速度を向上することができる。実施の形態4に係るハッシュ値算出装置500は、前算出f演算器515を備えたので、加算回数を低減し処理速度を向上することができる。実施の形態4に係るハッシュ値算出装置600の分割処理単位部は、中間レジスタ540を備えたので、処理速度を向上することができる。実施の形態4に係るハッシュ値算出装置700の部分処理部は、中間レジスタ540を備えたので、処理速度を向上することができる。以上の実施の形態のハッシュ値算出装置は、所定のハッシュアルゴリズムを用いることにより、入力したデータに対するハッシュ値を算出するハッシュ値算出装置において、入力したデータからハッシュ値を算出するまでの処理をp個に分割したそれぞれぞれの処理を順次行う第1処理部から第p処理部ただし、p≧2を備えたことを特徴とする。前記第1処理部は、ハッシュ値算出のためのデータを入力して処理し、処理した結果を第1処理データとして出力し、第2処理部は、第1処理部の出力した第1処理データを入力して処理し、処理した結果を第2処理データとして出力し、順次、第i処理部ただし、p≧i≧2は、第i-1処理部の出力した第i-1処理データを入力して処理し、処理した結果を第i処理データとして出力し、第p処理部は、第p-1処理部の出力した第p-1処理データを入力し、入力した第p-1処理データに基づいて、入力したデータに対応するハッシュ値を算出して出力することを特徴とする。前記第p処理部は、算出したハッシュ値を第1処理部に出力し、第1処理部は、第p処理部の出力したハッシュ値と後続データを入力するとともに、入力したハッシュ値に基づいて後続データを処理し、処理した結果を第1処理データとして出力することを特徴とする。前記ハッシュ値算出装置は、さらに、第1処理部にデータを入力する場合に第p処理部の算出したハッシュ値を第1処理部に出力する必要性があるかどうかを示すビットを付与するビット付与部を備え、第p処理部は、第1処理部に入力される入力データについてビット付与部により付与されたビットに基づいて、算出したハッシュ値を第1処理部に出力するかどうかを判断することを特徴とする。前記ハッシュ値算出装置は、さらに、第p処理部の出力したハッシュ値を記憶し、第1処理部への後続データの入力に合わせて、記憶したハッシュ値を第1処理部に出力するハッシュ値記憶部を備えたことを特徴とする。前記ハッシュアルゴリズムとして、SHATheSecureHashAlgorithm-1と、SHA-256と、SHA-384と、SHA-512とのうち、いずれかを用いることを特徴とする。以上の実施の形態の演算装置は、入力したデータを出力データとして出力するまでの処理をp個に分割したそれぞれの処理を順次行う第1処理部から第p処理部p≧2を備え、第i処理部p-1≧i≧1は、それぞれmビットのデータを格納するAレジスタ、Bレジスタ、Cレジスタと、m×nビットのデータをmビットずつに分割したn個のデータを格納する分割レジスタと、所定のパラメータを記憶するパラメータレジスタと、第i-1処理部の算出した所定のデータを前算出データとして記憶する前算出データレジスタと、パラメータレジスタに記憶されたパラメータと前算出データレジスタに記憶された前算出データとを加算する第1加算器と、分割レジスタに格納されているn個のデータの少なくともいずれかに基づきmビットのデータを求める第1演算器と、Aレジスタのデータと、Bレジスタのデータと、Cレジスタのデータとに基づいて所定の論理演算を行ってmビットのデータを求める第2演算器と、第1演算器によるmビットのデータと第2演算器によるmビットのデータとを加算して加算したデータを第i1処理部のための前算出データとして第i1処理部の前算出データレジスタに記憶させる第2加算器とを備えたことを特徴とする。以上の実施の形態の演算装置は、複数のサイクルにより演算を行う演算装置において、それぞれmビットのデータを格納するAレジスタ、Bレジスタ、Cレジスタと、m×nビットのデータをmビットずつに分割したn個のデータを格納する分割レジスタと、所定のパラメータを記憶するパラメータレジスタと、前のサイクルにおいて算出した所定のデータを前算出データとして記憶する前算出データレジスタと、パラメータレジスタに記憶されたパラメータと前算出データレジスタに記憶された前算出データとを加算する第1加算器と、分割レジスタに格納されているn個のデータの少なくともいずれかに基づきmビットのデータを求める第1演算器と、Aレジスタのデータと、Bレジスタのデータと、Cレジスタのデータとに基づいて所定の論理演算を行ってmビットのデータを求める第2演算器と、第1演算器によるmビットのデータと第2演算器によるmビットのデータとを加算して加算したデータを次のサイクルのための前算出データとして前算出レジスタに記憶させる第2加算器とを備えたことを特徴とする。以上の実施の形態の演算装置は、入力したデータを出力データとして出力するまでの処理をp個に分割したそれぞれの処理を順次行う第1処理部から第p処理部p≧2を備えるとともに、所定の処理部を示す第i処理部ただし、p-1≧i≧1は、データを格納する第iレジスタと、第iレジスタが格納するデータを入力してデータ処理を行う第i分割処理単位部と、第i分割処理単位部の処理を前処理と後処理とに分割して前処理の結果を前処理データとして入力して格納し後処理のために出力する中間レジスタとを備える演算装置において、第iレジスタは、それぞれmビットのデータを格納するAレジスタ、Bレジスタ、Cレジスタと、m×nビットのデータをmビットずつに分割したn個のデータを格納する分割レジスタと、所定のパラメータを記憶するパラメータレジスタと、第i-1処理部の算出した所定のデータを前算出データとして記憶する前算出データレジスタとを備え、第i分割処理単位部は、前処理として、パラメータレジスタに記憶されたパラメータと前算出データレジスタに記憶された前算出データとを加算する第1加算器と、前処理として、分割レジスタに記憶されたn個のデータの少なくともいずれかに基づきmビットのデータを求めて前処理データとして中間レジスタに出力する第1演算器と、前処理として、Aレジスタのデータと、Bレジスタのデータと、Cレジスタのデータとに基づいて所定の論理演算を行ってmビットのデータを求めて前処理データとして中間レジスタに出力する第2演算器と、後処理として、中間レジスタが格納した第1演算器によるmビットのデータと、第2演算器によるmビットのデータとを加算して、加算したデータを第i1処理部のための前算出データとして第i1処理部の前算出データレジスタに記憶させる第2加算器とを備えたことを特徴とする。以上の実施の形態の演算装置は、データを格納する格納レジスタと、格納レジスタが格納するデータを入力してデータ処理を行うデータ処理部と、データ処理部の処理を前処理と後処理とに分割して前処理の結果を前処理データとして入力して格納し後処理のために出力する中間レジスタとを備えた、複数のサイクルにより演算を行う演算装置において、格納レジスタは、それぞれmビットのデータを格納するAレジスタ、Bレジスタ、Cレジスタと、m×nビットのデータをmビットずつに分割したn個のデータを格納する分割レジスタと、所定のパラメータを記憶するパラメータレジスタと、前のサイクルにおいて算出した所定のデータを前算出データとして記憶する前算出データレジスタと、を備え、データ処理部は、前処理として、パラメータレジスタに記憶されたパラメータと前算出データレジスタに記憶された前算出データとを加算する第1加算器と、前処理として、分割レジスタに記憶されたn個のデータの少なくともいずれかに基づきmビットのデータを求めて前処理データとして中間レジスタに出力する第1演算器と、前処理として、Aレジスタのデータと、Bレジスタのデータと、Cレジスタのデータとに基づいて所定の論理演算を行ってmビットのデータを求めて前処理データとして中間レジスタに出力する第2演算器と、後処理として、中間レジスタが格納した第1演算器によるmビットのデータと、第2演算器によるmビットのデータとを加算して、加算したデータを次のサイクルのための前算出データとして前記前算出データレジスタに記憶させる第2加算器とを備えたことを特徴とする。"