(57)【要約】【課題】複数のデータに対してハッシュ処理のパイプライン処理が可能なハッシュ値算出装置の提供を目的とする。【解決手段】ハッシュ値算出装置１００は、入力したデータからハッシュ値を算出するまでの処理をｐ個に分割したそれぞれぞれの処理を順次行う第１処理部から第ｐ処理部を備える。第１処理部はハッシュ値算出のためのデータを入力して処理し、処理した結果を第１処理データとして出力する。第２処理部は第１処理部の出力した、第ｉ処理部は第ｉ−１処理部の出力した第ｉ−１処理データを入力して処理し、第１処理データを入力して処理し、処理した結果を第２処理データとして出力する。順次処理した結果を第ｉ処理データとして出力する。第ｐ処理部は第ｐ−１処理部の出力した第ｐ−１処理データを入力し、入力した第ｐ−１処理データに基づいて、入力したデータに対応するハッシュ値を算出して出力する。【選択図】図１
2011133916.tif 000002
【特許請求の範囲】
【請求項１】
入力したデータを出力データとして出力するまでの処理をｐ個に分割したそれぞれの処理を順次行う第１処理部から第ｐ処理部（ｐ≧２）を備え、
第ｉ処理部（ｐ−１≧ｉ≧１）は、
それぞれｍビットのデータを格納するＡレジスタ、Ｂレジスタ、Ｃレジスタと、
ｍ×ｎビットのデータをｍビットずつに分割したｎ個のデータを格納する分割レジスタと、
所定のパラメータを記憶するパラメータレジスタと、
第ｉ−１処理部の算出した所定のデータを前算出データとして記憶する前算出データレジスタと、
分割レジスタに格納されているｎ個のデータの少なくともいずれかに基づきｍビットのデータを求める第１演算器と、
Ａレジスタのデータと、Ｂレジスタのデータと、Ｃレジスタのデータとに基づいて所定の論理演算を行ってｍビットのデータを求める第２演算器と、
第１演算器によるｍビットのデータと第２演算器によるｍビットのデータとを加算して加算したデータを第ｉ＋１処理部のための前算出データとして第ｉ＋１処理部の前算出データレジスタに記憶させる第２加算器と
を備えたことを特徴とする演算装置。
【請求項２】
複数のサイクルにより演算を行う演算装置において、
それぞれｍビットのデータを格納するＡレジスタ、Ｂレジスタ、Ｃレジスタと、
ｍ×ｎビットのデータをｍビットずつに分割したｎ個のデータを格納する分割レジスタと、
所定のパラメータを記憶するパラメータレジスタと、
前のサイクルにおいて算出した所定のデータを前算出データとして記憶する前算出データレジスタと、
分割レジスタに格納されているｎ個のデータの少なくともいずれかに基づきｍビットのデータを求める第１演算器と、
Ａレジスタのデータと、Ｂレジスタのデータと、Ｃレジスタのデータとに基づいて所定の論理演算を行ってｍビットのデータを求める第２演算器と、
第１演算器によるｍビットのデータと第２演算器によるｍビットのデータとを加算して加算したデータを次のサイクルのための前算出データとして前算出レジスタに記憶させる第２加算器と
を備えたことを特徴とする演算装置。
【請求項３】
入力したデータを出力データとして出力するまでの処理をｐ個に分割したそれぞれの処理を順次行う第１処理部から第ｐ処理部（ｐ≧２）を備えるとともに、所定の処理部を示す第ｉ処理部（ただし、ｐ−１≧ｉ≧１）は、
データを格納する第ｉレジスタと、
第ｉレジスタが格納するデータを入力してデータ処理を行う第ｉ分割処理単位部と、
第ｉ分割処理単位部の処理を前処理と後処理とに分割して前処理の結果を前処理データとして入力して格納し後処理のために出力する中間レジスタと
を備える演算装置において、
第ｉレジスタは、
それぞれｍビットのデータを格納するＡレジスタ、Ｂレジスタ、Ｃレジスタと、
ｍ×ｎビットのデータをｍビットずつに分割したｎ個のデータを格納する分割レジスタと、
所定のパラメータを記憶するパラメータレジスタと、
第ｉ−１処理部の算出した所定のデータを前算出データとして記憶する前算出データレジスタと
を備え、
第ｉ分割処理単位部は、
前処理として、分割レジスタに記憶されたｎ個のデータの少なくともいずれかに基づきｍビットのデータを求めて前処理データとして中間レジスタに出力する第１演算器と、
前処理として、Ａレジスタのデータと、Ｂレジスタのデータと、Ｃレジスタのデータとに基づいて所定の論理演算を行ってｍビットのデータを求めて前処理データとして中間レジスタに出力する第２演算器と、
後処理として、中間レジスタが格納した第１演算器によるｍビットのデータと、第２演算器によるｍビットのデータとを加算して、加算したデータを第ｉ＋１処理部のための前算出データとして第ｉ＋１処理部の前算出データレジスタに記憶させる第２加算器と
を備えたことを特徴とする演算装置。
【請求項４】
データを格納する格納レジスタと、
格納レジスタが格納するデータを入力してデータ処理を行うデータ処理部と、
データ処理部の処理を前処理と後処理とに分割して前処理の結果を前処理データとして入力して格納し後処理のために出力する中間レジスタと
を備えた、複数のサイクルにより演算を行う演算装置において、
格納レジスタは、
それぞれｍビットのデータを格納するＡレジスタ、Ｂレジスタ、Ｃレジスタと、
ｍ×ｎビットのデータをｍビットずつに分割したｎ個のデータを格納する分割レジスタと、
所定のパラメータを記憶するパラメータレジスタと、
前のサイクルにおいて算出した所定のデータを前算出データとして記憶する前算出データレジスタと、
を備え、
データ処理部は、
前処理として、分割レジスタに記憶されたｎ個のデータの少なくともいずれかに基づきｍビットのデータを求めて前処理データとして中間レジスタに出力する第１演算器と、
前処理として、Ａレジスタのデータと、Ｂレジスタのデータと、Ｃレジスタのデータとに基づいて所定の論理演算を行ってｍビットのデータを求めて前処理データとして中間レジスタに出力する第２演算器と、
後処理として、中間レジスタが格納した第１演算器によるｍビットのデータと、第２演算器によるｍビットのデータとを加算して、加算したデータを次のサイクルのための前算出データとして前記前算出データレジスタに記憶させる第２加算器と
を備えたことを特徴とする演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハッシュ値を算出するハッシュ値算出装置に係り、特に、複数のデータに対してハッシュ処理が必要な場合に、高速かつ低面積実装を可能とするハッシュ値算出関数装置に関する。
【背景技術】
【０００２】
従来のハードウェアによるハッシュ関数処理装置は、図２４に示すように、アルゴリズム全体の部分的な処理を行う部分処理回路６１０を実装し、レジスタ６２０と部分処理回路６１０に対して、処理対象のデータを、図２４に示すように繰り返し往復させ、アルゴリズム全体の処理を行う。この場合、部分処理回路６１０分の面積で装置を構成することが可能なため、回路面積は小さく構成することが可能である。
【０００３】
しかし、一方で繰り返し処理中は次の後続データに対してハッシュ処理を行うことができず、高速な処理が期待できないという問題点がある。
【０００４】
また、複数のデータに対して処理ができるように、前記繰り返し処理による回路を複数実装した場合には、例えば、前記回路をｐ個のデータに対して処理可能とするためにｐ個の回路を実装した場合は、ｐ倍の回路面積となり、各データに対する処理速度の向上はない。
【０００５】
図２５は、ＳＨＡ（Ｔｈｅ  Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）−１アルゴリズムに対する従来のハードウェア実装例を示す。また、以下にＳＨＡ―１アルゴリズムを示す。
【０００６】
まず、以下に示すＳＨＡ―１アルゴリズムについてＷ０〜Ｗ１５の意味を説明する。Ｗ０〜Ｗ１５はＷ（５１２ビット）を格納するレジスタを左から順に３２ビット毎に分割したものである。一番左（最上位ワード）がＷ０で，一番右（最下位ワード）がＷ１５である。Ａ，Ｂ，Ｃ，Ｄ，Ｅのデータと演算するのは、どのサイクルにおいても，一番左のＷ０のみである。必ずＡ，Ｂ，Ｃ，Ｄ，Ｅとの演算に用いるデータが一番左のＷ０に格納されている。
［ＳＨＡ−１アルゴリズム］
ｉｎｐｕｔ      Ａｉｎ，Ｂｉｎ，Ｃｉｎ，Ｄｉｎ，Ｅｉｎ，Ｗ０ｉｎ〜Ｗ１５ｉｎ（それぞれ３２ｂｉｔ），
ｏｕｔｐｕｔ    Ａｏｕｔ，Ｂｏｕｔ，Ｃｏｕｔ，Ｄｏｔｕ，Ｅｏｕｔ，Ｗ０ｏｕｔ〜Ｗ１５ｏｕｔ（それぞれ３２ｂｉｔ），
［ｓｔｅｐ  ｆｕｎｃｔｉｏｎ］
Ａｏｕｔ＝（Ａｉｎ＜＜＜５）＋ｆｔ（Ｂｉｎ，Ｃｉｎ，Ｄｉｎ）＋Ｅｉｎ＋Ｗ０ｉｎ＋Ｋｔ
Ｂｏｕｔ＝Ａｉｎ
Ｃｏｕｔ＝Ｂｉｎ  ＜＜＜３０，
Ｄｏｕｔ＝Ｃｉｎ
Ｅｏｕｔ＝Ｄｉｎ 
ｉｆ（０≦ｔ≦１５）｛
Ｗｉｏｕｔ＝Ｗ（ｉ＋１）ｉｎ  （０≦ｉ≦１４）
Ｗ１５ｏｕｔ＝Ｗ０ｉｎ｝
ｅｌｓｅ  ｉｆ  （１６≦ｔ≦７９）  ｛
Ｗ０ｏｕｔ＝（Ｗ１ｉｎ＾Ｗ３ｉｎ＾Ｗ９ｉｎ＾Ｗ１４ｉｎ）  ＜＜＜１  
Ｗｉｏｕｔ＝Ｗ（ｉ＋１）ｉｎ（１≦ｉ≦１４）
Ｗ１５ｏｕｔ＝Ｗ０ｉｎ｝
ここで，ｔはステップ数を表し，
０≦ｔ≦１９のとき、
ｆｔ（Ｂｉｎ，Ｃｉｎ，Ｄｉｎ）＝（Ｂｉｎ＆Ｃｉｎ）｜（〜Ｂｉｎ＆Ｄｉｎ），
Ｋｔ＝０ｘ５Ａ８２７９９９
２０≦ｔ≦３９のとき、
ｆｔ（Ｂｉｎ，Ｃｉｎ，Ｄｉｎ）＝（Ｂｉｎ＾Ｃｉｎ＾Ｄｉｎ），
Ｋｔ＝０ｘ６ＥＤ９ＥＢＡ１
４０≦ｔ≦５９のとき
ｆｔ（Ｂｉｎ，Ｃｉｎ，Ｄｉｎ）＝（Ｂｉｎ＆Ｃｉｎ）｜（Ｂｉｎ＆Ｄｉｎ）｜（Ｃｉｎ＆Ｄｉｎ），
Ｋｔ＝０ｘ８Ｆ１ＢＢＣＤＣ
６０≦ｔ≦７９のとき、
ｆｔ（Ｂｉｎ，Ｃｉｎ，Ｄｉｎ）＝（Ｂｉｎ＾Ｃｉｎ＾Ｄｉｎ），
Ｋｔ＝０ｘＣＡ６２Ｃ１Ｄ６
と定義される。最後に、各変数Ａ，Ｂ，Ｃ，Ｄ，Ｅに初期値を加算する。
【０００７】
上記アルゴリズムにおいて、回路の処理性能を決定するのはＡｏｕｔを出力するまでのパスである。加算の順序や並列処理を行っても、少なくとも３回の２値加算処理が必要となる。つまり、上記ｓｔｅｐ  ｆｕｎｃｔｉｏｎを部分処理回路として実装した場合、少なくとも連続した３回の２値加算処理による回路遅延が処理に必要となる。
【０００８】
特開２００１−２８２１０６では、各演算（ｆｔ，＋，４入力ＸＯＲ）の出力に対してレジスタを使用し、レジスタ間の遅延を最大で２値加算１回分としている。しかし、上記ｓｔｅｐ  ｆｕｎｃｔｉｏｎの処理を行うために４サイクル必要であり、結果的に２値加算４回分の処理時間が必要であることに等しい。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００１−２８２１０６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明は、複数のデータに対してハッシュ処理を並列に可能であり、かつ前記例で挙げたｐ個の並列実装と比較して回路面積が小さく、かつ各データに対する処理速度が向上するハッシュ値算出装置の提供を目的とする。また、ハードウェア実装におけるレジスタ間の回路遅延を短縮し、かつ処理に必要なサイクルの増加を抑制したハッシュ値算出装置の提供を目的とする。また、繰り返し処理においても高速に動作するハッシュ値算出装置の提供を目的とする。
【課題を解決するための手段】
【００１１】
本発明のハッシュ値算出装置は、
所定のハッシュアルゴリズムを用いることにより、入力したデータに対するハッシュ値を算出するハッシュ値算出装置において、
入力したデータからハッシュ値を算出するまでの処理をｐ個に分割したそれぞれぞれの処理を順次行う第１処理部から第ｐ処理部（ただし、ｐ≧２）を備えたことを特徴とする。
【発明の効果】
【００１２】
本発明により、複数のデータに対してハッシュ処理の並列処理を行うことができ、かつ、回路の実装面積の小さいハッシュ値算出装置を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】実施の形態１に係るハッシュ値算出装置１００の構成を示す図である。
【図２】実施の形態１に係る、ＳＨＡ−１によりハッシュ値を算出する回路の構成例である。
【図３】実施の形態１に係るハッシュ値算出装置１００が、第１処理部から第４処理部で構成されている場合を想定した図である。
【図４】実施の形態１に係る入力データＤ１〜Ｄ４を示す図である。
【図５】実施の形態１において、入力データＤ１〜Ｄ４を順次入力した場合のパイプライン処理を示す図である。
【図６】実施の形態２において、ハッシュ値算出装置２００に入力される入力データの一例である。
【図７】実施の形態２に係るハッシュ値算出装置２００の構成を示す図である。
【図８】実施の形態２において、入力データ２０１を示す図である。
【図９】実施の形態２に係るハッシュ値算出装置１００のフィードバックを説明する図である。
【図１０】実施の形態２に係る入力データ２０２を示す図である。
【図１１】実施の形態２において、フィードバック用ビット付与部２１０によるフィードバック用ビットの付与を説明する図である。
【図１２】実施の形態３に係るハッシュ値算出装置３００の構成を示す図である。
【図１３】実施の形態３に係るハッシュ値算出装置３００を第１処理部と第２処理部とからなる簡略した構成にした場合を示す図である。
【図１４】実施の形態３において、ラッチを説明するための図である。
【図１５】実施の形態３において、メモリを説明するための図である。
【図１６】実施の形態３において、Ｗレジスタに格納されたデータの移行を示す図である。
【図１７】実施の形態３において、ステップ１５よりも後のステップにおける、Ｗレジスタに格納されたデータの移行を示す図である。
【図１８】実施の形態４に係る処理部を示す図である。
【図１９】実施の形態４に係るハッシュ値算出装置４００の構成を示す図である。
【図２０】実施の形態４に係るハッシュ値算出装置５００の構成を示す図である。
【図２１】実施の形態４に係る処理部を示す図である。
【図２２】実施の形態４に係るハッシュ値算出装置６００の構成を示す図である。
【図２３】実施の形態４に係るハッシュ値算出装置７００の構成を示す図である。
【図２４】従来のハッシュ装置を示す図である。
【図２５】従来のハッシュ装置の回路構成を示す図である。
【発明を実施するための形態】
【００１４】
実施の形態１．
図１〜図６を用いて実施の形態１に係るハッシュ値算出装置１００ついて説明する。実施の形態１に係るハッシュ値算出装置１００は、所定のハッシュアルゴリズムを用いることにより、入力したデータに対するハッシュ値を算出するハッシュ値算出装置である。ハッシュ値算出装置１００は、入力したデータからハッシュ値を算出するまでの処理をｐ個に分割したそれぞれぞれの処理を順次行う第１処理部から第ｐ処理部（ただし、ｐ≧４）を備える。これら第１処理部から第ｐ処理部により、複数の入力データに対してパイプライン処理を行うことで、各入力データのハッシュ値を算出することを特徴とする。本実施の形態１では、ハッシュ値算出装置１００は、所定のハッシュアルゴリズムとして、前記従来の技術で説明したＳＨＡ−１を用いることを想定する。
【００１５】
図１は、実施の形態１に係るハッシュ値算出装置１００の構成を示す図である。ハッシュ値算出装置１００は、ＳＨＡ−１のステップ０〜ステップ７９及び初期値の加算処理に対応した処理部として、第１処理部から、第ｐ処理部までを備える。一つのステップに一つの処理部が対応する場合、初期値との加算処理はステップ７９に含めるとｐは８０となり（初期値との加算処理はステップ７９に含める）、第８０処理部まで備える。また、一つのステップに２つの処理を対応させてもよく、その場合は、ｐは１６０となる。一つのステップにｎ個の処理を対応させる場合は、ｐは８０×ｎ（個）となり、８０ｎ個の処理部を備える。
【００１６】
ハッシュ値算出装置１００の第１処理部は、第１レジスタと第１分割処理単位部を備える。同様に、第１処理部以降の各処理部は、レジスタと分割処理単位部を備える。第１レジスタは、入力データを保持して第１分割処理単位部に入力データを渡す。第１分割処理単位部は、入力データを処理し、処理結果を第１処理データとして第２処理部に出力する。
【００１７】
第２処理部より以降は、第ｉ処理部は、一つ前の処理部である第ｉ−１処理部の出力した第ｉ−１処理データを入力して処理し、処理した結果を第ｉ処理データとして出力する。最終の処理部である第ｐ処理部は、一つ前の処理部である第ｐ−１処理部の出力した第ｐ−１処理データを入力し、入力した第ｐ−１処理データに基づいて、入力したデータに対応するハッシュ値を算出して出力する。
【００１８】
次に、図１に対応する回路の構成例を説明する。図２は、図１に対応するＳＨＡ−１によりハッシュ値を算出する回路の構成例である。図２は、従来例を示す図２５の部分処理回路６１０を、分割処理単位部として使用した例である。したがって、第ｔ＋１処理部は、部分処理回路６１０と構成が同様である。図２５の場合は、処理結果が繰り返しサイクルとして処理されるのに対して、図２の回路では、処理結果が次の処理部に出力される。これにより、後述のようにパイプライン処理を行うことができる。
【００１９】
第ｔ＋１処理部は、図１の一つの処理部に対応する。第ｔ＋１処理部における「ｔ＋１」は、ＳＨＡ−１の「ｔステップ」に対応する処理を行う処理部であることを示す。ＳＨＡ−１では、入力データからハッシュ値を算出する場合、０〜７９（最初のステップを「０」とおいた。）の８０ステップの処理を行う。ＳＨＡ−１の８０のステップについては最初のステップを「０ステップ」としているが、処理部については最初の処理部を「第１処理部」としているため、「ｔステップ」には「ｔ＋１処理部」が対応する。
【００２０】
次に、図３〜図５を用いて、ハッシュ値算出装置１００によるパイプライン処理について簡単に説明する。
【００２１】
図３は、説明を簡単にするために、ハッシュ値算出装置１００が第１処理部から第４処理部で構成されている場合（ｐ＝４の場合）を想定した図である。図示していなが、第１処理部は、第１レジスタと第１分割処理単位部を備える。第２処理部〜第４処理部についても同様である。図４は、第１処理部から第４処理部で構成された場合のハッシュ値算出装置１００によりハッシュ値を求める入力データＤ１〜Ｄ４を示す図である。入力データＤ１〜Ｄ４は、それぞれ５１２ビットである。図５は、入力データＤ１〜Ｄ４を順次入力した場合のパイプライン処理を示す図である。表の数字はデータを表す。例えば、「１」はＤ１、「２」はＤ２を表す。また（１）はＤ１のハッシュ値Ｈ（Ｄ１）を表す。各列は、図３のハッシュ値算出装置１００を示している。１列目は、ハッシュ値算出装置１００にＤ１を入力した状態を示している。２列目は、ハッシュ値算出装置１００にＤ１を入力後、さらに、Ｄ２を入力した状態を示している。３列目以降も同様である。このように、各列は、順次データを入力した場合のハッシュ値算出装置１００による処理を時系列で表している。
【００２２】
１つ目の入力データＤ１は、第１レジスタ（図示していない）に格納される。次のステップ（２列目）で、２つ目の入力データＤ２が第１レジスタに格納されると同時に、Ｄ１に対して第１分割処理単位部にて処理された第１処理データが、第２レジスタ（図示していない）に格納される。以下これを繰り返し、４個目の入力データＤ４が第１レジスタに格納されると同時に、Ｄ１のデータに対する第３分割処理単位部より処理されたデータが第４レジスタ（図示していない）に格納される。次のステップ（５列目）で、Ｄ１のデータに対するハッシュ値Ｈ（Ｄ１）が出力される。以下連続してＤ２からＤ４のハッシュ値が出力される。このように、ハッシュ値Ｈ（Ｄ１）〜ハッシュ値Ｈ（Ｄ４）が各ステップの処理毎に出力されるので、従来の複数サイクルの処理でハッシュ値を算出する場合に対して、従来の１サイクルでハッシュ値を算出することと等価な処理が可能となる。
【００２３】
実施の形態１に係るハッシュ値算出装置１００は、第１処理部から第ｐ処理部を備えたので、複数のデータを並列にパイプライン処理を行うことができる。
【００２４】
実施の形態２．
次に、図６〜図１１を用いて実施の形態２に係るハッシュ値算出装置２００ついて説明する。実施の形態１のハッシュ値算出装置１００に対し、実施の形態２に係るハッシュ値算出装置２００は、最終の処理部である第ｐ処理部の算出したハッシュ値を第１処理部にフィードバック（出力）する。そして、第１処理部は、第ｐ処理部のフィードバックによるハッシュ値と後続データを入力するとともに、フィードバックによるハッシュ値に基づいて後続データを処理し、処理した結果を第１処理データとして出力することを特徴とする。
【００２５】
ハッシュ値算出装置２００も、ハッシュ値算出装置１００と同様に、ＳＨＡ−１を用いる。
【００２６】
図６は、ハッシュ値算出装置２００に入力される入力データの一例である。
Ｄ１はＤ１，１〜Ｄ１，８０の８０個のデータからなっている。本実施の形態２では、Ｄ１は５１２×８０ビットとする。また、Ｄ１，１〜Ｄ１，８０は、それぞれ、５１２ビットとする。Ｄ２からＤ８０についてもデータの構成はＤ１と同様とする。
【００２７】
ＳＨＡ−１においては、例えば、５１２×８０ビットのデータであるＤ１のハッシュ値を求める場合、Ｄ１，１のハッシュ値Ｈ（Ｄ１，１）を求め、Ｈ（Ｄ１，１）を入力にフィードバックするとともに、後続データとしてＤ１，２を入力し、Ｈ（Ｄ１，１）を用いてＤ１，２を処理する必要がある。ハッシュ値算出装置２００は、第ｐ処理部の出力するハッシュ値を第１処理部にフィードバックすることにより後続データを処理可能とし、５
１２×８０ビットのデータの処理を可能とする。
【００２８】
図７は、実施の形態２に係るハッシュ値算出装置２００の構成を示す図である。図１に示したハッシュ値算出装置１００に対して、フィードバック用ビット付与部２１０、フィードバック回路２２０を新たに備えた構成である。
【００２９】
図８は、ハッシュ値算出装置２００によるフィードバックを説明するための入力データ２０１を示す図である。ハッシュ値算出装置２００は、図６に示したデータの入力を想定しているが、説明の簡略ため、図８のデータを用いて説明する。Ｄ１は５１２×２ビットのデータである。Ｄ１，１とＤ１，２とは、５１２ビットのデータである。Ｄ２〜Ｄ４についてもデータ構成はＤ１と同様である。
【００３０】
図９は、ハッシュ値算出装置１００のフィードバックを説明する図である。図９は、実施の形態１の図５に対応する。表の数字はデータを示す。例えば、「１１」はＤ１，１を示す。また、（１１）はＤ１，１のハッシュ値Ｈ（Ｄ１，１）を示す。図９において、５列目では、Ｄ１，１のハッシュ値Ｈ（Ｄ１，１）が出力されるとともに、Ｄ１，２が第１処理部に入力される。この場合、Ｄ１，２の処理にはハッシュ値Ｈ（Ｄ１，１）が必要であるため、フィードバック回路２２０は、ハッシュ値Ｈ（Ｄ１，１）を第１処理部にフィードバックする。フィードバック回路２２０は、同様に、Ｄ２，２、Ｄ３，２、Ｄ４，２、が第１処理部に入力される場合につても、これらの入力データに対応するハッシュ値Ｈ（Ｄ２，２）、Ｈ（Ｄ３，２）、Ｈ（Ｄ４，２）を第１処理部にフィードバックする。
【００３１】
次に、図１０、図１１を用いて、フィードバックを必要とするかどうかのビットを後続データに付与する場合について説明する。図１０は入力データ２０２を示す。入力データ２０２の特徴は、Ｄ1〜Ｄ４のビット数が異なることである。すなわち、Ｄ１＝５１２×３ビット，Ｄ２＝５１２×２ビット，Ｄ３＝５１２×４ビット，Ｄ４＝５１２×２ビット，である。Ｄ１，１、Ｄ２，１等は、５１２ビットである。
【００３２】
図１１は、フィードバック用ビット付与部２１０がフィードバック用のビットを付与する場合を説明する図である。表の数字は、図９の場合と同様である。フィードバック用ビット付与部２１０は、後続の入力データに対して、フィードバックが不要の場合、「０」を付与する。一方、フィードバックが必要な場合は、「１」を付与する。
【００３３】
図１１において、１列〜４列の第１処理部には、フィードバックがされていない。これは、フィードバック用ビット付与部２１０が、Ｄ１，１、Ｄ２，１、Ｄ３，１、Ｄ４，１の各データについて、１ビットのデータ「０」を付与したからである。一方、５列目〜９列目、１１列、及び１５列の第１処理部には、出力したハッシュ値がフィードバックされている。これは、フィードバック用ビット付与部２１０が、Ｄ１，２、Ｄ２，２、Ｄ３，２、Ｄ４，２及び、Ｄ３，３、Ｄ３，４の各データに、１ビットのデータ「１」を付与したからである。なお、図１１において、ハッチングのかけられた１０列目、及び１２列〜１４列の第１処理部分には所定の数値が入力される。
【００３４】
実施の形態２に係るハッシュ値算出装置２００は、ｍ×ｑビットの入力データに対しては、ｐ個のレジスタを通過後の処理値を１段目のレジスタにフィードバックし、同時に次のｍビットのデータを入力して処理することでｍ×ｑビットに対しても処理可能なことを特徴とする。
【００３５】
実施の形態２に係るハッシュ値算出装置２００は、ｐ個の異なる長さのデータにそれぞれに、フィードバックの可否を示す１ビットのデータを追加し、ｐ個の分割処理終了後に前記１ビットのデータにより、フィードバックするもしくは、そのまま出力するという判定を行う制御方式により、ｐ個の異なる長さのデータに対して並列処理を行うことを特徴とする。
【００３６】
実施の形態２に係るハッシュ値算出装置２００においては、第ｐ処理部の出力するハッシュ値を第１処理部にフィードバックするので、このハッシュ値を用いて後続の入力データをハッシュ処理することができる。
【００３７】
実施の形態２に係るハッシュ値算出装置２００においては、フィードバック用ビット付与部２１０は、第１処理部への入力データに対して、第ｐ処理部からのハッシュ値のフィードバックが必要かどうかを示すビットを付与するので、それぞれことなる長さからなる複数のデータのハッシュ値を算出することができる。
【００３８】
実施の形態３．
図１２〜図１７を用いて実施の形態３に係るハッシュ値算出装置３００ついて説明する。実施の形態１のハッシュ値算出装置１００に対し、ハッシュ値算出装置３００は、第ｐ処理部の出力したハッシュ値を記憶し、第１処理部への後続データの入力に合わせて、記憶したハッシュ値を第１処理部に出力するハッシュ値記憶部を備えたことを特徴とする。ＳＨＡ−１は、５１２ビットのデータを入力データとして入力しハッシュ値を算出する場合、図１においてｐ＝８０であれば、入力するデータは、図６に示すようにＤ１〜Ｄ８０の８０個の入力データが必要になる。すなわち、実施の形態１、実施の形態２では、フィードバックの必要性から、処理部の数（ｐの数）と同じデータ数（Ｄ１〜Ｄｐ）に対して並列処理が可能である。一方、実際の装置では、分割処理数ｐと並列に処理したいデータ数ｘが異なる場合がある。特に分割処理数ｐに対して並列処理を行うデータ数ｘがｐ＜ｘの場合、そのままでは処理ができない。そこで、図１２の構成とすることにより、わずかな回路面積の増加で対応可能となる。次に詳しく説明する。
【００３９】
図１２は、図７のハッシュ値算出装置２００に対して、ハッシュ値を記憶するメモリ３１０（ハッシュ値記憶部）を備えた構成である。ハッシュ処理の出力を深さｋ（＝ｘ−ｐ）のメモリ３１０にいったん格納し、格納したデータをフィードバックデータとして参照する場合には、メモリ３１０から読み出して用いる。格納されたデータを参照するタイミングは格納されてからｋサイクル後であり、参照を必要としない場合は、ｋサイクル後に上書きされる。このような構成をとることで、使用できるメモリサイズが許す限り、任意のｘ（＝ｐ＋ｋ）個からなるデータに対して並列処理が可能となる。
【００４０】
次に、図１３を用いて具体的に説明する。図１３はハッシュ値算出装置３００を第１処理部と第２処理部とからなる簡略した構成である。表の数字は図９と同様である。図１３のハッシュ値算出装置３００には図８の入力データ２０１が入力されるとする。図１３に示すハッシュ値算出装置３００には、メモリ３１０を備えることにより、第２処理部からのハッシュ値の出力を格納することにより、後続データのためにフィードバックを行うことが可能となる。すなわち、例えば、Ｄ１，２についてみると、Ｄ１，２の処理にはＤ１，１のハッシュ値Ｈ（Ｄ１，１）が必要である。そのため、２ステップに相当する深さｋ＝２のメモリ３１０を備えることで、Ｄ１，２の入力に合わせてハッシュ値Ｈ（Ｄ１，１）をフィードバックすることが可能となる。他のＤ２，２、Ｄ３，２、Ｄ４，２についても同様である。
【００４１】
次に、図１４〜図１７を用いてＷレジスタをラッチとメモリとを併用した構成の回路について説明する。図１４、図１５はラッチとメモリとのデータの読み出しの違いを説明するための図である。図１４は、ＤＡＴＡ１、ＤＡＴＡ２、ＤＡＴＡ３、ＤＡＴＡ４をラッチに格納している。ラッチの場合は、これら４つのデータを同時に読み出すことができる。一方図１５に示すように、図１４の構成に対して、全体をメモリで構成する場合、メモリでは同時に読み出すことができるのは一つのデータに限られる。メモリで構成する場合は実装面積を低減することができるが、このように読み出せるデータが一つである。これを考慮して次のようなメモリ構成が考えられる。
【００４２】
ハッシュアルゴリズムＳＨＡ−１、ＳＨＡ−２５６、ＳＨＡ−３８４、ＳＨＡ−５１２では、内部状態を保持するレジスタ（Ａ，Ｂ，Ｃ，Ｄ，Ｅ，｛Ｆ，Ｇ，Ｈ｝）（｛  ｝はＳＨＡ−２５６，ＳＨＡ−３８４，ＳＨＡ−５１２の場合）と、入力データ及び入力データ同士の処理による中間値を保持するＷレジスタの２系統に分けることができる。ＳＨＡ−１のアルゴリズムにおいて、図１６に示すように、Ｗレジスタについては、０〜１４ステップまでの１５ステップは、Ｗレジスタの一部、図中左端のデータのみを参照し、他のデータは参照の必要がない。よって、同じ番号で示すＷ２、Ｗ１４、Ｗ１５、Ｗ０等のブロック全体をメモリに実装し、データを読み出す時間を参照が必要となるタイミングに合わせることで、ラッチによるシフトレジスタと等価な実装が可能である。
【００４３】
同一の記憶容量を実現するために、ラッチと比較して、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）もしくはＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のメモリは１／５以下の面積で構成することが可能となる。また、各第１〜第ｐの各処理部の備えるＷレジスタに対する読み出しに必要な配線数はラッチによる構成の場合、各レジスタから読み出すため、１６本（Ｗ０〜Ｗ１５）必要であったが、上記の構成とすることで１クロックあたり１アドレスのみの読み出しであるため１本となり、配線コストは１／１６になる。同様の構成を１６ステップ以降にも適用可能である。図１７に示すように、ＳＨＡ−１のステップ毎にレジスタＷから４つのデータを参照し、処理する必要がある。その他のデータについては参照が行われないため、参照が必要となるまでのブロックをまとめてメモリとして実装する。
【００４４】
実施の形態３に係るハッシュ値算出装置３００は、メモリ３１０を備えたので、ハッシュ値を求めようとする入力データの数が装置のステップ数よりも多い場合でも、入力データのハッシュ値を求めることができる。
【００４５】
実施の形態４．
次に、図１８〜図２３を用いて実施の形態４に係るハッシュ値算出装置ついて説明する。実施の形態４は、各処理部の分割処理単位部に対応するＳＨＡ−１アルゴリズムのｓｔｅｐ  ｆｕｎｃｔｉｏｎを等価変形し、回路遅延の削減を図る構成である。この等価変形に対応するハッシュ値算出装置としてハッシュ値算出装置４００、５００、６００、７００について説明する。
【００４６】
まず、分割処理単位部について説明する。分割処理単位部は、
（１）レジスタ間の遅延がほぼ等しくなる。
（２）バス幅ができるだけ狭い処理時にステージを切る。
の２つの条件を満たすことが好ましい。（１）は図１の構成の場合、各分割処理単位部の回路遅延の最大値がハッシュ値算出装置全体の処理性能を決定するため、無駄のない処理を行うための条件になる。（２）は回路全体に必要なレジスタ量に影響するためである。よって、理想的な分割処理単位の１つとしてハッシュアルゴリズムのｓｔｅｐ  ｆｕｎｃｔｉｏｎ毎の分割がある。図１８は、ＳＨＡ−１アルゴリズムに対するｓｔｅｐ  ｆｕｎｃｔｉｏｎ毎の分割よる分割回路の構成を備えたハッシュ値算出装置４００の構成図である。図１８の構成は後述するが、この構成は、ｓｔｅｐ  ｆｕｎｃｔｉｏｎを以下のように等価変形し、回路遅延の削減を図っている。
【００４７】
まず、以下に説明するｓｔｅｐ  ｆｕｎｃｔｉｏｎにおける、Ｗ０〜Ｗ１５の意味を説明する。Ｗ０〜Ｗ１５は、Ｗ（５１２ビット）を格納するＷレジスタを左から順に３２ビット毎に分割したものを示す。一番左（最上位ワード）がＷ０で，一番右（最下位ワード）がＷ１５である。図１４、あるいは図１５で示したように、Ａ，Ｂ，Ｃ，Ｄ，Ｅのデータと演算するのは、どのステップの分割処理単位部においても，一番左のＷ０のみである。逆にいうと必ずＡ，Ｂ，Ｃ，Ｄ，Ｅとの演算に用いるデータが一番左のＷ０に格納されている。例えば，１５ステップ目にはＷｔ＝Ｗ１５がＷ０の位置に格納されている。
つまり、
Ｗｔ：ｔステップ目にＡ，Ｂ，Ｃ，Ｄ，Ｅとの演算に用いるＷの値（３２ｂｉｔ）、
Ｗｉ：ｉ番目の位置に格納されているＷの値を示す。
【００４８】
ｉｎｐｕｔ      Ａｉｎ，Ｂｉｎ，Ｃｉｎ，Ｄｉｎ，Ｅｉｎ，Ｗ０ｉｎ〜Ｗ１５ｉｎ，Ｗｆｔｉｎ（それぞれ３２ｂｉｔ）
ｏｕｔｐｕｔ    
Ａｏｕｔ，Ｂｏｕｔ，Ｃｏｕｔ，Ｄｏｔｕ，Ｅｏｕｔ，Ｗ０ｏｕｔ〜Ｗ１５ｏｕｔ，Ｗｆｔｏｕｔ（それぞれ３２ｂｉｔ）
［ｓｔｅｐ  ｆｕｎｃｔｉｏｎ］
Ａｏｕｔ＝（Ａｉｎ  ＜＜＜５）＋Ｅｉｎ＋Ｗｆｔｉｎ＋Ｋｔ
Ｂｏｕｔ＝Ａｉｎ
Ｃｏｕｔ＝Ｂｉｎ  ＜＜＜３０
Ｄｏｕｔ＝Ｃｉｎ
Ｅｏｕｔ＝Ｄｉｎ
ｉｆ（０≦ｔ≦１５）  ｛
Ｗｉｏｕｔ＝Ｗ（ｉ＋１）ｉｎ  （０≦ｉ≦１４）
Ｗ１５ｏｕｔ＝Ｗ０ｉｎ｝
ｅｌｓｅ  ｉｆ  （１６≦ｔ≦７９）  ｛
Ｗ０ｏｕｔ＝（Ｗ１ｉｎ＾Ｗ３ｉｎ＾Ｗ９ｉｎ＾Ｗ１４ｉｎ）  ＜＜＜１  
Ｗｉｏｕｔ＝Ｗ（ｉ＋１）ｉｎ  （１≦ｉ≦１４）
Ｗ１５ｏｕｔ＝Ｗ０ｉｎ｝
Ｗｆｔｏｕｔ＝ｆｔ（Ａｉｎ，Ｂｉｎ＜＜＜３０，Ｃｉｎ）＋Ｗ０ｏｕｔ
ここで，ｔはステップ数を表し、
０≦ｔ≦１９のとき、
ｆｔ（Ａｉｎ，Ｂｉｎ＜＜＜３０，Ｃｉｎ）＝（Ａｉｎ＆Ｂｉｎ＜＜＜３０）｜（〜Ａｉｎ＆Ｃｉｎ），
Ｋｔ＝０ｘ５Ａ８２７９９９、
２０≦ｔ≦３９のとき、
ｆｔ（Ａｉｎ，Ｂｉｎ＜＜＜３０，Ｃｉｎ）＝（Ａｉｎ＾Ｂｉｎ＜＜＜３０＾Ｃｉｎ），Ｋｔ＝０ｘ６ＥＤ９ＥＢＡ１、
４０≦ｔ≦５９のとき、
ｆｔ（Ａｉｎ，Ｂｉｎ＜＜＜３０，Ｃｉｎ）＝（Ａｉｎ＆Ｂｉｎ＜＜＜３０）｜（Ａｉｎ＆Ｃｉｎ）｜（Ｂｉｎ＜＜＜３０＆Ｃｉｎ），
Ｋｔ＝０ｘ８Ｆ１ＢＢＣＤＣ、
６０≦ｔ≦７９のとき、
ｆｔ（Ａｉｎ，Ｂｉｎ＜＜＜３０，Ｃｉｎ）＝（Ａｉｎ＾Ｂｉｎ＜＜＜３０＾Ｃｉｎ），Ｋｔ＝０ｘＣＡ６２Ｃ１Ｄ６、
と定義される。最後に、各変数Ａ，Ｂ，Ｃ，Ｄ，Ｅに初期値を加算する。
【００４９】
図１８におけるハッシュ値算出装置４００の第ｔ＋１処理部５０５は、第ｔ＋１レジスタ５２０と第ｔ＋１分割処理単位部５１０とを備えている。第ｔ＋１処理部５０５は、図１の第１処理部から第ｐ処理部の一つを示しており、第ｔ＋１レジスタ５２０、及び第ｔ＋１分割処理単位部５１０は、図１のいずれかの処理部のレジスタとその分割処理単位部に該当する。
【００５０】
第ｔ＋１レジスタ５２０は、上記等価変形したｓｔｅｐ  ｆｕｎｃｔｉｏｎにおけるＡ、Ｂ、Ｃ、Ｄ、Ｅのデータを格納するＡＢＣＤＥレジスタ、所定のパラメータであるＫ値を記憶するＫレジスタ（パラメータレジスタ）、後述するＷｆレジスタ（前算出データレジスタ）、及び５１２ビットの入力データを１６分割した３２ビットずつのデータをＷ０〜Ｗ１５のレジスタに格納する全体で５１２ビットのＷレジスタ（分割レジスタ）を備える。
【００５１】
第ｔ＋１分割処理単位部５１０は、加算器１１（第１加算器）、加算器１２（第２加算器）、加算器１３、加算器１４、ＸＯＲ演算器５１６（第１演算器）及び前算出ｆ演算器５１５（第２演算器）を備える。
【００５２】
図１９は、上記等価変形したｓｔｅｐ  ｆｕｎｃｔｉｏｎの特徴を説明するための図である。簡単のため、ｔ＝１のステップ、ｔ＝２のステップにおける各処理部（すなわち、第２処理部と第３処理部）を図示して説明する。ＳＨＡ−１では、Ａ３に格納されるデータは、
Ａ３
＝Ａ２（＜＜＜５）＋ｆ２（Ｂ２，Ｃ２，Ｄ２）＋Ｅ２＋Ｋ２＋Ｗ０２
＝Ａ２（＜＜＜５）＋Ｅ２＋Ｋ２＋ｆ１（Ａ１，Ｂ１（＜＜＜３０），Ｃ１）＋Ｗ０２
＝Ａ２（＜＜＜５）＋Ｅ２＋Ｋ２＋Ｗｆ２ 
したがって、
Ａ３＝Ａ２（＜＜＜５）＋Ｅ２＋Ｋ２＋Ｗｆ２    （式１）
ここで、Ｗｆ２＝ｆ１（Ａ１，Ｂ１（＜＜＜３０），Ｃ１）＋Ｗ０２    （式２）
とおいた。
【００５３】
Ｗｆ２は、図１９において、次の処理を示している。
（１）ｔ＝１のステップにおいて、Ａ１，Ｂ１（＜＜＜３０），及びＣ１を用いて前算出ｆ演算器５１５で演算を行う。
（２）ｔ＝１のステップにおいて、加算器５１２は、Ｗレジスタ５２３のＷ０に格納されるデータと、前記（１）における前算出ｆ演算器５１５の演算結果とを加算して、レジスタＷｆ２に格納する。
（３）ｔ＝２のステップにおいて、加算器５１３は、Ａ２（＜＜＜５）とＥ２を加算して、加算器５１４に出力する。また、加算器５１１は、Ｋ２とＷｆ２とを加算して、加算器５１４に出力する。
（４）ｔ＝２のステップにおいて、加算器５１４は、加算器５１３の出力と、加算器５１１の出力とを加算して、Ａ３に格納する。
（５）ｔ＝２のステップにおいて、前算出ｆ演算器５１５と、ＸＯＲ演算器５１６と、加算器５１２とは、ｔ＝３のステップで使用するためのＷｆ３＝ｆ２（Ａ２，Ｂ２（＜＜＜３０），Ｃ２）＋Ｗ０３を、ｔ＝３のステップで使用する前算出データとして算出する。すなわち、ｔ＝２のステップにおいて前算出ｆ演算器５１５は、Ａ２，Ｂ２（＜＜＜３０），及びＣ２を入力して演算処理を行い加算器５１２に出力する。また、ｔ＝２のステップにおいて、ＸＯＲ演算器５１６はＷ０３として格納されるべきデータを演算処理して生成し加算器５１２に出力する。加算器５１２は、前算出ｆ演算器５１５からの出力と、ＸＯＲ演算器５１６からの出力を加算して、Ｗｆ３＝ｆ２（Ａ２，Ｂ２（＜＜＜３０），Ｃ２）＋Ｗ０３を算出して、Ｗｆ３レジスタに格納する。
【００５４】
図１９で説明したように、予め前のステップで前算出データＷｆを計算しておくことにより、そのステップにおける加算回数が、従来のＳＨＡ−１アルゴリズムより１回減っている。すなわち、ｔ＝２のステップについてみれば、第３レジスタから第４レジスタへのデータの流れを考える場合、図１９においては、加算器を経る回数は最大２回である。例えば、加算器５１３から加算器５１４を経て第４レジスタに到達し、あるいは、加算器５１１から加算器５１３を経て第４レジスタに到達する。ところが、従来のＳＨＡ−１アルゴリズムによる図２５の回路では最大で３つの加算器を経ることになる。図２５では、データは加算器１２、加算器１３、加算器１４を経てレジスタ２０にフィードバックされる。
【００５５】
このように、前記従来の技術で述べた［ＳＨＡ―１アルゴリズム］と比較すると、図１９では、Ａｏｕｔ出力に必要な加算回数が１回減少する。一方、Ｗｆｔ（ｔはステップを示す）というパラメータが新たに追加されており、これは分割処理単位部毎に３２ビット分のレジスタが増加することを意味する。Ｗｆｔ出力のパスは１回の論理演算と１回の整数加算分の回路遅延となる。前記の論理演算は［ＳＨＡ−１アルゴリズム］に規定されている式からわかるように、加算に必要な回路遅延と比較すると、それ以下である。よって、図１９の最大回路遅延は２回の整数加算分であることがわかる。これは、図２４の回路構成と比較すると、加算処理１回分の回路遅延が減少するため、全体の処理性能が向上する。
【００５６】
次に、上記図１８、図１９で示した処理単位を、図２４に示した繰り返しのサイクルによりハッシュ値を求める装置に適用した場合のハッシュ値算出装置５００を示す図である。回路の動作は、前記で説明した（１）〜（５）と同様である。ハッシュ値算出装置５００は、複数のサイクルの演算を行いハッシュ値を算出する。上記図１８、図１９で示した処理単位を用いているため、従来の［ＳＨＡ−１アルゴリズム］を実施する回路である図２５に対して演算回数が一回減少している。
【００５７】
図２１は、図１８に示した構成を、より高速化する回路構成の例である。また、図２２は、構成をわかりやすくするため図２１の分割処理単位部を２段に表した図である。
図１８に示した分割処理単位部において、連続する演算間に中間レジスタ５４０を設けることで、最大回路遅延を加算１回分にしたものである。この場合、図１８の構成と比較して、加算１回分の回路遅延が減少する。中間レジスタ５４０は、第ｔ＋１分割処理単位部の処理を前処理と後処理に分けることにより回路遅延を防止する。前処理として、加算器５１３による加算処理、前算出ｆ演算器５１５による演算処理、加算器５１１による加算処理及びＸＯＲ演算器５１６による演算処理がある。また、後処理として、加算器５１４による加算処理、及び加算器５１２による加算処理がある。ただし、図１８の構成と比較して、約２倍のレジスタ量が必要となる。回路規模より処理性能を優先させる場合に有利な構成である。
【００５８】
図２３は、図２１で示した中間レジスタ５４０を備える処理部を、図２４に示した繰り返し処理に適用したハッシュ値算出装置７００を示す図である。ハッシュ値算出装置７００は、図２０に示したハッシュ値算出装置５００に中間レジスタ５４０を備えた構成である。図２２に示したハッシュ値算出装置６００と同様に、中間レジスタ５４０により、処理を前処理と後処理に分けることで処理の高速化を図ることができる。
【００５９】
以上実施の形態１から実施の形態４においては、ハッシュアルゴリズムをＳＨＡ−１を想定したが、これに限ることなく、ハッシュアルゴリズムとして、ＳＨＡ−２５６、ＳＨＡ−３８４、ＳＨＡ−５１２等に用いても構わない。
【００６０】
実施の形態４に係るハッシュ値算出装置４００は、前算出ｆ演算器５１５を備えたので、加算回数を低減し処理速度を向上することができる。
【００６１】
実施の形態４に係るハッシュ値算出装置５００は、前算出ｆ演算器５１５を備えたので、加算回数を低減し処理速度を向上することができる。
【００６２】
実施の形態４に係るハッシュ値算出装置６００の分割処理単位部は、中間レジスタ５４０を備えたので、処理速度を向上することができる。
【００６３】
実施の形態４に係るハッシュ値算出装置７００の部分処理部は、中間レジスタ５４０を備えたので、処理速度を向上することができる。
【００６４】
以上の実施の形態のハッシュ値算出装置は、
所定のハッシュアルゴリズムを用いることにより、入力したデータに対するハッシュ値を算出するハッシュ値算出装置において、
入力したデータからハッシュ値を算出するまでの処理をｐ個に分割したそれぞれぞれの処理を順次行う第１処理部から第ｐ処理部（ただし、ｐ≧２）を備えたことを特徴とする。
【００６５】
前記第１処理部は、
ハッシュ値算出のためのデータを入力して処理し、処理した結果を第１処理データとして出力し、
第２処理部は、
第１処理部の出力した第１処理データを入力して処理し、処理した結果を第２処理データとして出力し、
順次、第ｉ処理部（ただし、ｐ≧ｉ≧２）は、
第ｉ−１処理部の出力した第ｉ−１処理データを入力して処理し、処理した結果を第ｉ処理データとして出力し、
第ｐ処理部は、
第ｐ−１処理部の出力した第ｐ−１処理データを入力し、入力した第ｐ−１処理データに基づいて、入力したデータに対応するハッシュ値を算出して出力することを特徴とする。
【００６６】
前記第ｐ処理部は、
算出したハッシュ値を第１処理部に出力し、
第１処理部は、
第ｐ処理部の出力したハッシュ値と後続データを入力するとともに、入力したハッシュ値に基づいて後続データを処理し、処理した結果を第１処理データとして出力することを特徴とする。
【００６７】
前記ハッシュ値算出装置は、さらに、
第１処理部にデータを入力する場合に第ｐ処理部の算出したハッシュ値を第１処理部に出力する必要性があるかどうかを示すビットを付与するビット付与部を備え、
第ｐ処理部は、
第１処理部に入力される入力データについてビット付与部により付与されたビットに基づいて、算出したハッシュ値を第１処理部に出力するかどうかを判断することを特徴とする。
【００６８】
前記ハッシュ値算出装置は、さらに、
第ｐ処理部の出力したハッシュ値を記憶し、第１処理部への後続データの入力に合わせて、記憶したハッシュ値を第１処理部に出力するハッシュ値記憶部を備えたことを特徴とする。
【００６９】
前記ハッシュアルゴリズムとして、
ＳＨＡ（Ｔｈｅ  Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）−１と、ＳＨＡ−２５６と、ＳＨＡ−３８４と、ＳＨＡ−５１２とのうち、いずれかを用いることを特徴とする。
【００７０】
以上の実施の形態の演算装置は、
入力したデータを出力データとして出力するまでの処理をｐ個に分割したそれぞれの処理を順次行う第１処理部から第ｐ処理部（ｐ≧２）を備え、
第ｉ処理部（ｐ−１≧ｉ≧１）は、
それぞれｍビットのデータを格納するＡレジスタ、Ｂレジスタ、Ｃレジスタと、
ｍ×ｎビットのデータをｍビットずつに分割したｎ個のデータを格納する分割レジスタと、
所定のパラメータを記憶するパラメータレジスタと、
第ｉ−１処理部の算出した所定のデータを前算出データとして記憶する前算出データレジスタと、
パラメータレジスタに記憶されたパラメータと前算出データレジスタに記憶された前算出データとを加算する第１加算器と、
分割レジスタに格納されているｎ個のデータの少なくともいずれかに基づきｍビットのデータを求める第１演算器と、
Ａレジスタのデータと、Ｂレジスタのデータと、Ｃレジスタのデータとに基づいて所定の論理演算を行ってｍビットのデータを求める第２演算器と、
第１演算器によるｍビットのデータと第２演算器によるｍビットのデータとを加算して加算したデータを第ｉ＋１処理部のための前算出データとして第ｉ＋１処理部の前算出データレジスタに記憶させる第２加算器と
を備えたことを特徴とする。
【００７１】
以上の実施の形態の演算装置は、
複数のサイクルにより演算を行う演算装置において、
それぞれｍビットのデータを格納するＡレジスタ、Ｂレジスタ、Ｃレジスタと、
ｍ×ｎビットのデータをｍビットずつに分割したｎ個のデータを格納する分割レジスタと、
所定のパラメータを記憶するパラメータレジスタと、
前のサイクルにおいて算出した所定のデータを前算出データとして記憶する前算出データレジスタと、
パラメータレジスタに記憶されたパラメータと前算出データレジスタに記憶された前算出データとを加算する第１加算器と、
分割レジスタに格納されているｎ個のデータの少なくともいずれかに基づきｍビットのデータを求める第１演算器と、
Ａレジスタのデータと、Ｂレジスタのデータと、Ｃレジスタのデータとに基づいて所定の論理演算を行ってｍビットのデータを求める第２演算器と、
第１演算器によるｍビットのデータと第２演算器によるｍビットのデータとを加算して加算したデータを次のサイクルのための前算出データとして前算出レジスタに記憶させる第２加算器と
を備えたことを特徴とする。
【００７２】
以上の実施の形態の演算装置は、
入力したデータを出力データとして出力するまでの処理をｐ個に分割したそれぞれの処理を順次行う第１処理部から第ｐ処理部（ｐ≧２）を備えるとともに、所定の処理部を示す第ｉ処理部（ただし、ｐ−１≧ｉ≧１）は、
データを格納する第ｉレジスタと、
第ｉレジスタが格納するデータを入力してデータ処理を行う第ｉ分割処理単位部と、
第ｉ分割処理単位部の処理を前処理と後処理とに分割して前処理の結果を前処理データとして入力して格納し後処理のために出力する中間レジスタと
を備える演算装置において、
第ｉレジスタは、
それぞれｍビットのデータを格納するＡレジスタ、Ｂレジスタ、Ｃレジスタと、
ｍ×ｎビットのデータをｍビットずつに分割したｎ個のデータを格納する分割レジスタと、
所定のパラメータを記憶するパラメータレジスタと、
第ｉ−１処理部の算出した所定のデータを前算出データとして記憶する前算出データレジスタと
を備え、
第ｉ分割処理単位部は、
前処理として、パラメータレジスタに記憶されたパラメータと前算出データレジスタに記憶された前算出データとを加算する第１加算器と、
前処理として、分割レジスタに記憶されたｎ個のデータの少なくともいずれかに基づきｍビットのデータを求めて前処理データとして中間レジスタに出力する第１演算器と、
前処理として、Ａレジスタのデータと、Ｂレジスタのデータと、Ｃレジスタのデータとに基づいて所定の論理演算を行ってｍビットのデータを求めて前処理データとして中間レジスタに出力する第２演算器と、
後処理として、中間レジスタが格納した第１演算器によるｍビットのデータと、第２演算器によるｍビットのデータとを加算して、加算したデータを第ｉ＋１処理部のための前算出データとして第ｉ＋１処理部の前算出データレジスタに記憶させる第２加算器と
を備えたことを特徴とする。
【００７３】
以上の実施の形態の演算装置は、
データを格納する格納レジスタと、
格納レジスタが格納するデータを入力してデータ処理を行うデータ処理部と、
データ処理部の処理を前処理と後処理とに分割して前処理の結果を前処理データとして入力して格納し後処理のために出力する中間レジスタと
を備えた、複数のサイクルにより演算を行う演算装置において、
格納レジスタは、
それぞれｍビットのデータを格納するＡレジスタ、Ｂレジスタ、Ｃレジスタと、
ｍ×ｎビットのデータをｍビットずつに分割したｎ個のデータを格納する分割レジスタと、
所定のパラメータを記憶するパラメータレジスタと、
前のサイクルにおいて算出した所定のデータを前算出データとして記憶する前算出データレジスタと、
を備え、
データ処理部は、
前処理として、パラメータレジスタに記憶されたパラメータと前算出データレジスタに記憶された前算出データとを加算する第１加算器と、
前処理として、分割レジスタに記憶されたｎ個のデータの少なくともいずれかに基づきｍビットのデータを求めて前処理データとして中間レジスタに出力する第１演算器と、
前処理として、Ａレジスタのデータと、Ｂレジスタのデータと、Ｃレジスタのデータとに基づいて所定の論理演算を行ってｍビットのデータを求めて前処理データとして中間レジスタに出力する第２演算器と、
後処理として、中間レジスタが格納した第１演算器によるｍビットのデータと、第２演算器によるｍビットのデータとを加算して、加算したデータを次のサイクルのための前算出データとして前記前算出データレジスタに記憶させる第２加算器と
を備えたことを特徴とする。
【符号の説明】
【００７４】
１１，１２，１３，１４  加算器、１５  ｆ演算器、１６  ＸＯＲ演算器、２０  第ｔ＋１レジスタ、２０ａ  第ｔ＋２レジスタ、２０ｂ  第ｔ＋２レジスタ、２１  ＡＢＣＤＥレジスタ、２２  Ｋレジスタ、２３  Ｗレジスタ、１００  ハッシュ値算出装置、１０１  入力データ、１０２  入力データ、２００  ハッシュ値算出装置、２０１，２０２  入力データ、２１０  フィードバック用ビット付与部、２２０  フィードバック回路、３００  ハッシュ値算出装置、３１０  メモリ、５０５  第ｔ＋１処理部、５１０  第ｔ＋１分割処理単位部、５１１，５１２，５１３，５１４  加算器、５１５  前算出ｆ演算器、５１６  ＸＯＲ演算器、５２０  第ｔ＋１レジスタ、５２０ａ  第ｔ＋２レジスタ、５２１  ＡＢＣＤＥレジスタ、５２２  Ｋレジスタ、５２０１  Ｗｆレジスタ、５２３  Ｗレジスタ、５４０  中間レジスタ、６１０  部分処理回路、６２０  レジスタ。
【図１】
2011133916.tif 000003
【図２】
2011133916.tif 000004
【図３】
2011133916.tif 000005
【図４】
2011133916.tif 000006
【図５】
2011133916.tif 000007
【図６】
2011133916.tif 000008
【図７】
2011133916.tif 000009
【図８】
2011133916.tif 000010
【図９】
2011133916.tif 000011
【図１０】
2011133916.tif 000012
【図１１】
2011133916.tif 000013
【図１２】
2011133916.tif 000014
【図１３】
2011133916.tif 000015
【図１４】
2011133916.tif 000016
【図１５】
2011133916.tif 000017
【図１６】
2011133916.tif 000018
【図１７】
2011133916.tif 000019
【図１８】
2011133916.tif 000020
【図１９】
2011133916.tif 000021
【図２０】
2011133916.tif 000022
【図２１】
2011133916.tif 000023
【図２２】
2011133916.tif 000024
【図２３】
2011133916.tif 000025
【図２４】
2011133916.tif 000026
【図２５】
2011133916.tif 000027