(57)【特許請求の範囲】
【請求項１】
元のデータからＳＨＡアルゴリズムを用いて１６０ｂｉｔのハッシュ値を求めるための第１ないし第５レジスタを備えるハッシュ装置であって、第１レジスタの上位５ビットを下位側へ巡回シフトする第１のローテーション処理部と、第２、第３、第４レジスタに基づく論理演算を実行する論理演算処理部と、第１のローテーション処理部の出力と第５レジスタの値を加算する第１加算器と、ハッシュ値を求める元のデータを分割または演算処理したデータを設定する元データ設定処理部と、所定の定数を設定する定数設定処理部とを含んで構成される第１ステージと、第１ステージの論理演算処理部と第１加算器と元データ設定処理部と定数設定処理部の出力のうちいずれか２つを加算する第２加算器と、残りの２つを加算する第３加算器とを含んで構成される第２ステージと、第２ステージの第２加算器と第３加算器の出力を加算する第４加算器を含んで構成される第３ステージと、第５、第４レジスタに第４、第３レジスタの値を代入し、第２レジスタの上位３０ビットを下位側へ巡回シフトする第２のローテーション処理部の出力を第３レジスタに代入し、第２レジスタに第１レジスタの値を代入し、第３ステージの第４加算器の出力を第１レジスタに代入する処理を含む第４ステージとを含む回路ブロックを８０段縦続接続し、１段目の回路ブロックの第１ないし第５レジスタに第１ないし第５の初期値を設定すると共に、最終段の回路ブロックの第１ないし第５レジスタの出力に前記第１ないし第５の初期値をそれぞれ加算する加算器を接続して成ることを特徴とするハッシュ装置。
【請求項２】
請求項１において、７９段目の回路ブロックの第４ステージに第４レジスタの値と第５の初期値を加算する第５加算器を設け、８０段目の回路ブロックの第１ステージに第３レジスタの値と第４の初期値を加算する第６加算器を設け、８０段目の回路ブロックの第３ステージに第１レジスタの値と第２の初期値を加算する第７加算器を設け、８０段目の回路ブロックの第４ステージは第２レジスタの上位３０ビットを下位側へ巡回シフトする第２のローテーション処理部の出力と第３の初期値を加算する第８加算器と、８０段目の回路ブロックの第３ステージの第４加算器の出力と第１の初期値を加算する第９加算器とを含むステージとし、８０段目の回路ブロックにさらに第５ステージを設けて、該第５ステージでは、第５加算器の出力を第５レジスタに、第６加算器の出力を第４レジスタに、第８加算器の出力を第３レジスタに、第７加算器の出力を第２レジスタに、第９加算器の出力を第１レジスタにそれぞれ代入することにより、最終段の回路ブロックの第１ないし第５レジスタの出力に第１ないし第５の初期値をそれぞれ加算する処理を前記第５ないし第９加算器で行うことを特徴とするハッシュ装置。
【請求項３】
請求項１または２において、１段目から８０段目の回路ブロックの全部または一部は、少なくとも２個の加算器を含む１ステージ分の演算回路を複数回反復して使用することにより構成され、前記演算回路が何段目の回路ブロックの処理をしているかをカウントする第１カウンタと、各回路ブロックを複数のステージに分割する第２カウンタと、第１カウンタの値から１ないし２０段目、２１ないし４０段目、４１ないし６０段目、６１ないし８０段目を区別する第３カウンタを備え、各カウンタの値により前記演算回路の処理内容を各段の回路ブロックの各ステージに応じて変更することを特徴とするハッシュ装置。
【請求項４】
請求項１ないし３のいずれかにおいて、ハッシュ値を求める元のデータを分割または演算処理したデータを設定する元データ設定処理部は、元の５１２ｂｉｔのデータを１６分割して格納して１ないし１６段目の回路ブロックの元データとして出力する第１ないし第１６の元データレジスタと、１７ないし８０段目の回路ブロックの元データとして第１、第３、第９及び第１４の元データレジスタの値の排他的論理和を求めて出力する演算回路と、前記演算回路による演算後に第２ないし第１６の元データレジスタの値を第１ないし第１５の元データレジスタに順次代入すると共に、第１６の元データレジスタには前記演算回路の出力の最上位１ｂｉｔを下位側に巡回シフトしたデータを代入する手段を含んで構成されることを特徴とするハッシュ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はネットワークセキュリティを確保する技術に関し、特に元のデータを不可逆なハッシュ値に変換するハッシュ関数ＳＨＡをハードウェアで実現するハッシュ装置に関する。
【０００２】
【従来の技術】
従来、ハッシュ関数の一つであるＳＨＡアルゴリズムに関してはソフトウェアにより実現されている。以下、ＳＨＡアルゴリズムについて説明する。３２ｂｉｔ長の変数Ａ，Ｂ，Ｃ，Ｄ，Ｅの初期値Ａｉｎｉｔ，Ｂｉｎｉｔ，Ｃｉｎｉｔ，Ｄｉｎｉｔ，Ｄｉｎｉｔ，Ｅｉｎｉｔを１６進数で次のとおり設定する。
Ａｉｎｉｔ＝０ｘ６７４５２３０１
Ｂｉｎｉｔ＝０ｘＥＦＣＤＡＢ８９
Ｃｉｎｉｔ＝０ｘ９８ＢＡＤＣＦＥ
Ｄｉｎｉｔ＝０ｘ１０３２５４７６
Ｅｉｎｉｔ＝０ｘＣ３Ｄ２Ｅ１Ｆ０
【０００３】
５１２ｂｉｔずつｎ個に分割された元データをＭ１，Ｍ２，…，Ｍｎとする。ｉ＝１〜ｎについて以下の処理を繰り返す。
（イ）元データＭｉを３２ｂｉｔずつ１６に分割し、左からＷ１，Ｗ２，…，Ｗ１６とおく。
（ロ）Ａ＝Ａｉｎｉｔ、Ｂ＝Ｂｉｎｉｔ、Ｃ＝Ｃｉｎｉｔ、Ｄ＝Ｄｉｎｉｔ、Ｅ＝Ｅｉｎｉｔとおく。
【０００４】
（ハ）ｔ＝１，２，…，７９，８０について以下の処理を繰り返す。
ＴＥＭＰ＝Ｓ（５，Ａ）＋ｆ（Ｂ，Ｃ，Ｄ）＋Ｅ＋Ｗ＋Ｋ
ここで、ＴＥＭＰは一時変数、Ｓ（ｍ，ｘ）は３２ｂｉｔ変数ｘの上位ｍｂｉｔを下位側へ巡回シフトしたものであり、ｆ（Ｂ，Ｃ，Ｄ）、Ｋは次式で与えられる。
・１≦ｔ≦２０のとき、
ｆ（Ｂ，Ｃ，Ｄ）＝（Ｂ  ＡＮＤ  Ｃ）ＯＲ（（ＮＯＴ  Ｂ）ＡＮＤ  Ｄ）
Ｋ＝０ｘ５Ａ８２７９９９
・２１≦ｔ≦４０のとき、
ｆ（Ｂ，Ｃ，Ｄ）＝Ｂ  ＸＯＲ  Ｃ  ＸＯＲ  Ｄ
Ｋ＝０ｘ６ＥＤ９ＥＢＡ１
・４１≦ｔ≦６０のとき、
ｆ（Ｂ，Ｃ，Ｄ）＝（Ｂ  ＡＮＤ  Ｃ）ＯＲ（Ｂ  ＡＮＤ  Ｄ）ＯＲ（Ｃ  ＡＮＤ  Ｄ）
Ｋ＝０ｘ８Ｆ１ＢＢＣＤＣ
・６１≦ｔ≦８０のとき、
ｆ（Ｂ，Ｃ，Ｄ）＝Ｂ  ＸＯＲ  Ｃ  ＸＯＲ  Ｄ
Ｋ＝０ｘＣＡ６２Ｃ１Ｄ６
【０００５】
また、元データＷは次式で与えられる。
・１≦ｔ≦１６のとき、
Ｗ＝Ｗｔ
・１７≦ｔ≦８０では、
Ｗ＝Ｓ（１，Ｗt-3   ＸＯＲ  Ｗt-8   ＸＯＲ  Ｗt-14  ＸＯＲ  Ｗt-16）とする。
上式により一時変数ＴＥＭＰを求めた後、Ｅ＝Ｄ、Ｄ＝Ｃ、Ｃ＝Ｓ（３０，Ｂ）、Ｂ＝Ａ、Ａ＝ＴＥＭＰとする。
【０００６】
（ニ）最後に、各変数Ａ，Ｂ，Ｃ，Ｄ，Ｅに初期値を加算する。すなわち、
Ａ＝Ａｉｎｉｔ＋Ａ
Ｂ＝Ｂｉｎｉｔ＋Ｂ
Ｃ＝Ｃｉｎｉｔ＋Ｃ
Ｄ＝Ｄｉｎｉｔ＋Ｄ
Ｅ＝Ｅｉｎｉｔ＋Ｅ
とする。これによりハッシュ関数の値（３２×５＝１６０ｂｉｔ）が演算される。この１６０ｂｉｔのデータは元のメッセージを要約したメッセージダイジェスト（要約関数）として利用される。
【０００７】
【発明が解決しようとする課題】
ハッシュ関数を用いるユーザは、ソフトウェアで実現されるハッシュ関数ＳＨＡよりもハードウェアで実現されるハッシュ関数ＳＨＡに、より大きな信頼を持っており、ハードウェアによる高速かつ小面積のハッシュ装置の早期実現が望まれている。
【０００８】
【課題を解決するための手段】
請求項１の発明によれば、構造的に周期性のあるＳＨＡアルゴリズムの１周期分の処理について、同時に用いる加算器の最大数を２個に制限することで、小さい回路面積で高速にハッシュ値を生成できる。すなわち、請求項１の発明は、元のデータからＳＨＡアルゴリズムを用いて１６０ｂｉｔのハッシュ値を求めるための第１ないし第５レジスタＡ〜Ｅを備えるハッシュ装置であって、図１に示すように、第１レジスタＡの上位５ビットを下位側へ巡回シフトする第１のローテーション処理部４と、第２、第３、第４レジスタＢ，Ｃ，Ｄに基づく論理演算ｆ（Ｂ，Ｃ，Ｄ）を実行する論理演算処理部５と、第１のローテーション処理部４の出力と第５レジスタＥの値を加算する第１加算器６と、ハッシュ値を求める元のデータを分割または演算処理したデータＷを設定する元データ設定処理部７と、所定の定数Ｋを設定する定数設定処理部８とを含んで構成される第１ステージと、第１ステージの論理演算処理部５と第１加算器６と元データ設定処理部７と定数設定処理部８の出力のうちいずれか２つを加算する第２加算器９と、残りの２つを加算する第３加算器１０とを含んで構成される第２ステージと、第２ステージの第２加算器９と第３加算器１０の出力を加算する第４加算器１１を含んで構成される第３ステージと、第５、第４レジスタＥ，Ｄに第４、第３レジスタＤ，Ｃの値を代入し、第２レジスタＢの上位３０ビットを下位側へ巡回シフトする第２のローテーション処理部１２の出力を第３レジスタＣに代入し、第２レジスタＢに第１レジスタＡの値を代入し、第３ステージの第４加算器１１の出力を第１レジスタＡに代入する処理を含む第４ステージとを含む回路ブロックを図２に示すように８０段縦続接続し、１段目の回路ブロックの第１ないし第５レジスタＡ〜Ｅに第１ないし第５の初期値Ａｉｎｉｔ〜Ｅｉｎｉｔを設定すると共に、最終段の回路ブロックの第１ないし第５レジスタＡ〜Ｅの出力に前記第１ないし第５の初期値Ａｉｎｉｔ〜Ｅｉｎｉｔをそれぞれ加算する加算器を接続して成ることを特徴とするものである。なお、図２の構成では、最終段の回路ブロックの第１ないし第５レジスタＡ〜Ｅの出力に第１ないし第５の初期値Ａｉｎｉｔ〜Ｅｉｎｉｔをそれぞれ加算する加算器についても、同時に用いる加算器の最大数を２個に制限しており、Ａ＝Ａｉｎｉｔ＋Ａ、Ｂ＝Ｂｉｎｉｔ＋Ｂを１ステージ、Ｃ＝Ｃｉｎｉｔ＋Ｃ、Ｄ＝Ｄｉｎｉｔ＋Ｄを次の１ステージ、Ｅ＝Ｅｉｎｉｔ＋Ｅをさらに次の１ステージで実行している。したがって、後述のように、本発明のハッシュ装置に具備すべき加算器の数は２個であり、回路面積を小さくできるものである。
【０００９】
請求項２の発明によれば、構造的に周期性のあるＳＨＡアルゴリズムのうち唯一周期性が乱れる最終段の処理についても構造的な周期性を維持するために、請求項１において、８０段目の回路を図４に示すような回路に置換することで、最小の回路面積でかつ高速にハッシュ値を生成できる。すなわち、請求項２の発明では、図４に示すように、請求項１の発明における７９段目の回路ブロックの第４ステージに第４レジスタＤの値と第５の初期値Ｅｉｎｉｔを加算する第５加算器１３を設け、８０段目の回路ブロックの第１ステージに第３レジスタＣの値と第４の初期値Ｄｉｎｉｔを加算する第６加算器１４を設け、８０段目の回路ブロックの第３ステージに第１レジスタＡの値と第２の初期値Ｂｉｎｉｔを加算する第７加算器１５を設け、８０段目の回路ブロックの第４ステージは第２レジスタＢの上位３０ビットを下位側へ巡回シフトする第２のローテーション処理部１２の出力と第３の初期値Ｃｉｎｉｔを加算する第８加算器１６と、８０段目の回路ブロックの第３ステージの第４加算器１１の出力と第１の初期値Ａｉｎｉｔを加算する第９加算器１７とを含むステージとし、８０段目の回路ブロックにさらに第５ステージを設けて、該第５ステージでは、第５加算器１３の出力を第５レジスタＥに、第６加算器１４の出力を第４レジスタＤに、第８加算器１６の出力を第３レジスタＣに、第７加算器１５の出力を第２レジスタＢに、第９加算器１７の出力を第１レジスタＡにそれぞれ代入することにより、最終段の回路ブロックの第１ないし第５レジスタＡ〜Ｅの出力に第１ないし第５の初期値Ａｉｎｉｔ〜Ｅｉｎｉｔをそれぞれ加算する処理を前記第５ないし第９加算器１３〜１７で行うことを特徴とするものである。このようにすれば、図５に示すように、最終段の回路ブロックの出力に図２に示すような５つの加算器を付加する必要がなくなる。
【００１０】
請求項３の発明によれば、請求項１または２において、１段目から８０段目の回路ブロックに対し、図６及び図７に示すように、１から８０までカウントできるカウンタ１を割り当て、１段目から７９段目の回路ブロックの各ステージに対しては１から４までカウントでき、８０段目の回路ブロックの各ステージに対しては１から５までカウントできるカウンタ２を割り当て、さらに、図８に示すように、カウンタ１の１〜２０、２１〜３９、４１〜５９、６１〜８０の値に対して１から４までカウントできるカウンタ３を割り当てたものであり、これにより、図１に示す回路ブロックの使い回しが可能となり、最小の回路面積でかつ高速にハッシュ値を生成できる。すなわち、請求項３の発明では、図２または図５に示される１段目から８０段目の回路ブロックの全部または一部は、少なくとも２個の加算器を含む１ステージ分の演算回路を複数回反復して使用することにより構成され、前記演算回路が何段目の回路ブロックの処理をしているかをカウントする第１カウンタ１と、各回路ブロックを複数のステージに分割する第２カウンタ２と、第１カウンタの値から１ないし２０段目、２１ないし４０段目、４１ないし６０段目、６１ないし８０段目を区別する第３カウンタ３を備え、各カウンタ１〜３の値により前記演算回路の処理内容を各段の回路ブロックの各ステージに応じて変更することを特徴とするものである。
【００１１】
請求項４の発明によれば、ＳＨＡアルゴリズムで用いる８０種類の代入値を１６個のレジスタで生成、供給することで、小面積でハッシュ値を生成できる回路を実現できる。すなわち、請求項４の発明では、請求項１ないし３のいずれかにおいて、ハッシュ値を求める元のデータを分割または演算処理したデータＷを設定する元データ設定処理部７は、図９に示すように、元の５１２ｂｉｔのデータを１６分割して格納して１ないし１６段目の回路ブロックの元データとして出力する第１ないし第１６の元データレジスタＷ１〜Ｗ１６と、１７ないし８０段目の回路ブロックの元データとして第１、第３、第９及び第１４の元データレジスタの値の排他的論理和を求めて出力する演算回路と、前記演算回路による演算後に第２ないし第１６の元データレジスタＷ２〜Ｗ１６の値を第１ないし第１５の元データレジスタＷ１〜Ｗ１５に順次代入すると共に、第１６の元データレジスタＷ１６には前記演算回路の出力の最上位１ｂｉｔを下位側に巡回シフトしたデータを代入する手段を含んで構成されることを特徴とするものである。
【００１２】
【発明の実施の形態】
上述のように、ＳＨＡアルゴリズムは類似した処理を８０回繰り返す。このようなアルゴリズムの構造的な周期性に着目し、最小の面積で高速処理が可能なハッシュ関数ＳＨＡを実現するために、請求項１の発明では、図３に示すような回路ブロックを１ブロックとし、その中で１つのステージ内に加算器が２個以下になるように４つのステージに分割する。上記の回路ブロックを回路ブロックＫとする。回路ブロックＫの第１ステージでは、Ａ，Ｂ，Ｃ，Ｄ，Ｅレジスタに格納されている初期値Ａ，Ｂ，Ｃ，Ｄ，Ｅ（１段目のブロックではＡｉｎｉｔ，Ｂｉｎｉｔ，Ｃｉｎｉｔ，Ｄｉｎｉｔ，Ｅｉｎｉｔ、２段目のブロック以降は前ブロックで導出された値）により演算ｆ（Ｂ，Ｃ，Ｄ）の実行およびそれにより得られた値（ａ）の保持、値Ａの上位５ｂｉｔを巡回シフトしたものと値Ｅとの加算の実行およびそれにより得られた値（ｂ）の保持、あらかじめ与えられた１６個の値（Ｗ１〜Ｗ１６）をもとに行われる演算Ｗ［ｔ］の実行およびそれにより得られた値（ｃ）の保持、そしてブロックの番号により選択、入力される値Ｋ（その値を（ｄ）とする）の保持を行う。
【００１３】
回路ブロックＫの第２ステージでは第１ステージで得られた結果から（ａ）＋（ｂ）の実行およびそれにより得られた値（ｅ）の保持、（ｃ）＋（ｄ）の実行およびそれにより得られた値（ｆ）の保持を行う。
回路ブロックＫの第３ステージでは第２ステージで得られた結果から（ｅ）＋（ｆ）の実行およびそれにより得られた値（ｇ）の保持を行う。
【００１４】
回路ブロックＫの第４ステージでは第３ステージで得られた結果（ｇ）をＡレジスタに、もとあったＡレジスタの値をＢレジスタに、もとあったＢレジスタの値の上位３０ｂｉｔを下位側に巡回シフトしてＣレジスタに、もとあったＣレジスタの値をＤレジスタに、もとあったＤレジスタの値をＥレジスタにそれぞれ格納する。これによりＡ，Ｂ，Ｃ，Ｄ，Ｅレジスタの値の更新が完了する。
【００１５】
この回路ブロックＫを８０個直列に接続し、８０段目のブロックにより出力されたＡ，Ｂ，Ｃ，Ｄ，Ｅに対して、Ａ＝Ａｉｎｉｔ＋Ａ，Ｂ＝Ｂｉｎｉｔ＋Ｂ，Ｃ＝Ｃｉｎｉｔ＋Ｃ，Ｄ＝Ｄｉｎｉｔ＋Ｄ，Ｅ＝Ｅｉｎｉｔ＋Ｅの演算を行う。以上の処理を行う回路全体の構成は図２のようになる。
【００１６】
請求項２の発明では、図４に示すような回路ブロックを１ブロックとし、その中で１つのステージ内に加算器が２個以下になるように５つのステージに分割する。上記の回路ブロックを回路ブロックＺとし、図５に示すように７９段目の回路ブロックＫの後に接続する。回路ブロックＺでは１ステージに含まれる加算器の最大数を２個にするために、回路ブロックＫの７９段目のブロックの第４ステージにＥｉｎｉｔと７９段目のブロックの第４ステージのＤレジスタを加算する加算器１３を設け、８０段目のブロックの第１ステージにＤｉｎｉｔと７９段目のブロックの第４ステージのＣレジスタを加算する加算器１４を設け、８０段目のブロックの第３ステージにＢｉｎｉｔと７９段目のブロックの第４ステージのＡレジスタを加算する加算器１５を設け、８０段目のブロックの第４ステージにＣｉｎｉｔと７９段目のブロックの第４ステージのＢレジスタの上位３０ｂｉｔを下位側に巡回シフトしたものを加算する加算器１６と、Ａｉｎｉｔと８０段目のブロックの第３ステージの加算器１１の出力を加算する加算器１７を設ける。
【００１７】
これにより回路ブロックＺは回路ブロックＫをもとに第１ステージと第３ステージにそれぞれ１個、第４ステージに２個の加算器を追加した構造となるが、その他に１ブロック内で行われる値の導出や巡回シフト等の処理は他ブロックと同一のステージで実行されるため、回路ブロックＺの構造について回路ブロックＫとの類似性が保たれる。
【００１８】
請求項３の発明によれば、図５の回路に対し、１から８０までカウントできるカウンタ１、１から５までカウントできるカウンタ２、１から４までカウントできるカウンタ３を付加する。カウンタ１の１から７９は回路ブロックＫを、カウンタ１の８０は回路ブロックＺを示す。カウンタ１により必要な回路ブロックを選択する。カウンタ２の１から４は回路ブロックＫ、回路ブロックＺのステージ１から４を示す。また、カウンタ２の５は回路ブロックＺの第５ステージを示す。回路ブロックＫ、回路ブロックＺにおいて、各ステージに現れる加算器の数は２個以下であり、カウンタ２を用いて処理中のステージを判定し、加算器の入出力端子の接続を変更することにより加算器の再利用が可能となり、これによりハッシュ装置に具備する加算器を２個にまで低減することができる。カウンタ３の１はカウンタ１の１〜２０、２はカウンタ１の２１〜４０、３はカウンタ１の４１〜６０、４はカウンタ１の６１〜８０に対応する。
【００１９】
回路ブロックＫ、回路ブロックＺについて、回路構成は類似しているが、各ステージで代入する値、式はカウンタ３の１から４で異なる。したがって、カウンタ３を用いて、代入する値、式を選択する。これら３種類のカウンタを組み合わせることにより、現時点でＳＨＡアルゴリズムのうち、どのブロックのどのステージの処理を行っているのかを判断し、代入値、代入式、加算器の入出力選択を行う。なお、回路ブロックＫについて、カウンタ１とカウンタ２の関係を図７に示す。回路ブロックＺについて、カウンタ１とカウンタ２の関係を図８に示す。また、カウンタ１とカウンタ３の関係を図９に示す。
【００２０】
請求項４の発明によれば、上記の回路において用いる代入値Ｗを、カウンタ１が示す全ての回路ブロック（１〜８０段目）のそれぞれに対応して出力する。ハッシュ関数ＳＨＡでは８０種類の元データＷが必要となるが、これら全てを生成するために、１６個のレジスタ（Ｗ１〜Ｗ１６）を具備し、カウンタ１の値が１〜１６のときはカウンタ１の値ｔに対応するＷｔをそのまま出力し、カウンタ１の値ｔが１７〜８０のときはＷ＝Ｗt-3   ＸＯＲ  Ｗt-8   ＸＯＲ  Ｗt-14  ＸＯＲ  Ｗt-16の演算を行い、その後、最上位ｂｉｔを下位側へ巡回シフトし、Ｗ１６に格納する。このときＷ２〜Ｗ１６に元々格納されていた値は、それぞれ１つ下位のレジスタＷ１〜Ｗ１５にシフト（Ｗｎ→Ｗｎ−１；ｎ＝２，３，…，１６）され、Ｗ１に格納されていた値は消去される。この様子を図１０に示す。これにより１６個のレジスタＷ１〜Ｗ１６のみでハッシュ値の生成に必要な８０種類の元データＷ［１］〜Ｗ［８０］を全て生成することができる。
【００２１】
【発明の効果】
請求項１の発明によれば、１ステージに２個以内の加算器を用いてハッシュ関数ＳＨＡを求めることができるから、小さな回路面積で高速なハッシュ装置を提供できる。
請求項２の発明によれば、最終段およびその前段の回路ブロックで加算器が余っているステージを利用して最終段で必要となる初期値の加算を行うようにしたので、ハッシュ値の演算速度をより一層向上できる。
【００２２】
請求項３の発明によれば、何段目の回路ブロックかを判定する第１カウンタ、どのステージかを判定する第２カウンタ、論理演算処理部で用いる論理式や定数設定処理部で設定すべき定数を選択する第３カウンタを設けたので、１ステージに２個以内の加算器を含む共通の回路ブロックを複数回反復して使用する動作が容易に実現できる。
請求項４の発明によれば、８０段の回路ブロックでそれぞれ必要となる８０種類の元データを１６個のレジスタで設定できるから、ハッシュ装置の回路面積を小さくできる。
【図面の簡単な説明】
【図１】本発明のハッシュ装置における基本回路ブロックを示す回路図である。
【図２】請求項１の一実施形態に係るハッシュ装置の全体構成を示す回路図である。
【図３】請求項１の一実施形態に係るハッシュ装置の各段の回路ブロックを示す回路図である。
【図４】請求項２の一実施形態に係るハッシュ装置の最終段の回路ブロックを示す回路図である。
【図５】請求項２の一実施形態に係るハッシュ装置の全体構成を示す回路図である。
【図６】請求項３の１ないし７９段目の回路ブロックと第１、第２カウンタの関係を示す説明図である。
【図７】請求項３の８０段目の回路ブロックと第１、第２カウンタの関係を示す説明図である。
【図８】請求項３の第１、第３カウンタの関係を示す説明図である。
【図９】請求項４の元データ設定処理部の構成および動作を示す説明図である。
【符号の説明】
４    第１のローテーション処理部
５    論理演算処理部
６    第１加算器
７    元データ設定処理部
８    定数設定処理部
９    第２加算器
１０  第３加算器
１１  第４加算器
１２  第２のローテーション処理部
【図１】
0003709760.tif 000002
【図２】
0003709760.tif 000003
【図３】
0003709760.tif 000004
【図４】
0003709760.tif 000005
【図５】
0003709760.tif 000006
【図６】
0003709760.tif 000007
【図７】
0003709760.tif 000008
【図８】
0003709760.tif 000009
【図９】
0003709760.tif 000010