二つのデータを結合した第一の結合データ、および、二つのデータを結合した第二の結合データを入力する入力手段と、前記第一の結合データを上位ビットデータと下位ビットデータに分割し、前記第二の結合データを上位ビットデータと下位ビットデータに分割する分割手段と、前記第一の結合データから分割した上位ビットデータと前記第二の結合データから分割した上位ビットデータ、および、前記第一の結合データから分割した下位ビットデータと前記第二の結合データから分割した下位ビットデータをそれぞれ加算処理する加算手段と、前記加算処理によって得られる上位ビットデータと前記加算処理によって得られる下位ビットデータを結合した第三の結合データを出力する出力手段とを有することを特徴とする演算処理装置。前記加算手段は、前記上位ビットデータおよび前記下位ビットデータの最上位ビットの加算における桁上がりを無視することを特徴とする請求項1に記載された演算処理装置。前記分割手段は、ハッシュ関数の種類を示す情報を入力し、前記情報に基づき前記上位ビットデータまたは前記下位ビットデータのビット長を決定することを特徴とする請求項1または請求項2に記載された演算処理装置。前記二つのデータのビット長が同一であることを特徴とする請求項1から請求項3の何れか一項に記載された演算処理装置。前記二つのデータのビット長が異なることを特徴とする請求項1から請求項3の何れか一項に記載された演算処理装置。メッセージを入力する入力手段と、請求項1から請求項5の何れか一項に記載された演算装置を用いて前記メッセージのハッシュ値を演算する演算手段とを有することを特徴とする情報処理装置。入力手段、分割手段、加算手段、出力手段を有する演算処理装置の演算方法であって、前記入力手段が、二つのデータを結合した第一の結合データ、および、二つのデータを結合した第二の結合データを入力し、前記分割手段が、前記第一の結合データを上位ビットデータと下位ビットデータに分割し、前記第二の結合データを上位ビットデータと下位ビットデータに分割し、前記加算手段が、前記第一の結合データから分割した上位ビットデータと前記第二の結合データから分割した上位ビットデータ、および、前記第一の結合データから分割した下位ビットデータと前記第二の結合データから分割した下位ビットデータをそれぞれ加算処理し、前記出力手段が、前記加算処理によって得られる上位ビットデータと前記加算処理によって得られる下位ビットデータを結合した第三の結合データを出力することを特徴とする演算方法。コンピュータを請求項1から請求項5の何れか一項に記載された演算処理装置の各手段として機能させることを特徴とするプログラム。コンピュータを請求項6に記載された情報処理装置の各手段として機能させることを特徴とするプログラム。本発明は、このように、二つのデータを結合した結合データを構成する各データの独立性を維持して結合データを高速に加算処理することを目的とする。本発明は、前記の目的を達成する一手段として、以下の構成を備える。二つのデータを結合した第一の結合データ、および、二つのデータを結合した第二の結合データを入力し、前記第一の結合データを上位ビットデータと下位ビットデータに分割し、前記第二の結合データを上位ビットデータと下位ビットデータに分割し、前記第一の結合データから分割した上位ビットデータと前記第二の結合データから分割した上位ビットデータ、および、前記第一の結合データから分割した下位ビットデータと前記第二の結合データから分割した下位ビットデータをそれぞれ加算処理し、前記加算処理によって得られる上位ビットデータと前記加算処理によって得られる下位ビットデータを結合した第三の結合データを出力することを特徴とする。本発明によれば、二つのデータを結合した結合データを構成する各データの独立性を維持して結合データを高速に加算処理することができる。以下、本発明にかかる実施例の演算処理を図面を参照して詳細に説明する。[装置の構成]図1のブロック図により実施例の情報処理装置の構成例を説明する。分割部12は、入力されるメッセージM1とM2を分割して、メッセージM1に対してx個のメッセージブロックMB1を、メッセージM2に対してy個のメッセージブロックMB2を出力する。なお、本実施例は一種類のハッシュ関数に限定されず、様々なハッシュ関数に対応する。ハッシュ関数には例えばMD5、SHAのSHA1、SHA224、SHA256、SHA384、SHA512などがある。なお、SHA224、SHA256、SHA384、SHA512の四つのハッシュ関数はまとめてSHA2と呼ばれることがある。MD5、SHA1、SHA224、SHA256の場合、メッセージは512ビット単位に分割され、先頭の512ビットから順に分割ブロックとして出力される。同様に、SHA384、SHA512の場合、メッセージは1024ビット単位に分割され、先頭の1024ビットから順にメッセージブロックとして出力される。初期値保持部13は、ハッシュ生成に伴うイニシャル値を保持し、メインルーチン処理部15の要求に応じて保持するイニシャル値を出力する。なお、イニシャル値は、ハッシュ値の初期値であり固定値である。本実施例の初期値保持部13は、ハッシュ関数が利用するイニシャル値IVを二つ結合した値IVIVの状態で保持する。例えば、メインルーチン処理部15が同じハッシュ関数SHA1を適用する場合、SHA1のイニシャル値6745230132ビット16進数を二つ結合した値である。つまり、初期値保持部13は、イニシャル値IVIVとして674523016745230164ビット16進数を出力する。レジスタ14は、初期値保持部13が出力するイニシャル値IVIV、または、出力スイッチ17から詳細は後述する二次中間データEXEXを入力し、入力値をRRとして保持する。なお、レジスタ14は、初回のみイニシャル値IVIVを入力し、以降は二次中間データEXEXを入力する。メインルーチン処理部15は、分割部12からメッセージブロックMB1とMB2を入力し、レジスタ14からRRを入力して、処理を行い、一次中間データDDを出力する。なお、一次中間データDDは、後述する結合部316から出力されるデータである。排他的論理和部16は、メインルーチン処理部15が出力する一次中間データDD、または、レジスタ14が保持する値RRを入力して排他的論理和演算を行い、演算結果を二次中間データEXEXとして出力する。スイッチ17は、排他的論理和部16が出力する二次中間データEXEXをレジスタ14または分割部18に出力する。スイッチ17は、分割部12によって分割されたメッセージブロックMB1およびMB2のすべてが処理されたと判定した場合は二次中間データEXEXを分割部18へ出力し、そうでなければ二次中間データEXEXをレジスタ14に出力する。分割部18は、出力スイッチ17から入力される二次中間データEXEXをEXとEXに分割し、EXをメッセージM1のハッシュ値H1として、EXをメッセージM2のハッシュ値H2として出力する。[演算処理]図2のフローチャートにより情報処理装置の演算処理を説明する。分割部12は、例えばユーザが入力するハッシュ値の元である任意長のメッセージM1とM2を入力し、入力したメッセージM1とM2を分割して、x個のメッセージブロックMB1と、y個のメッセージブロックMB2を生成する。次に、初期値保持部13は、保持するイニシャル値IVIVをレジスタ14に設定し、レジスタ14のメッセージカウンタiに0を初期設定する。なお、メッセージカウンタiは、何番目までのメッセージブロックMB1とMB2がメインルーチン処理部15に入力されたかをカウントするカウンタである。次に、分割部12は、メッセージカウンタiのカウント値iに対応するメッセージブロックMB1iとMB2iをメインルーチン処理部15に入力する。メインルーチン処理部15は、入力されたメッセージメッセージMB1とMB2、および、レジスタ14が保持するRRを用いて、詳細を後述するメインルーチン処理を行い、一次中間データDDを排他的論理和部16に出力する。次に、排他的論理和部16は、一次中間データDDとレジスタ14が保持するRRの排他的論理和を演算し、演算結果の二次中間データEXEXをスイッチ17に出力する。スイッチ17は、メッセージカウンタiを参照して、メッセージブロックMB1とMB2のすべてが処理されたか否かを判定する。スイッチ17は、メッセージブロックのすべてが処理された場合は処理をステップS31へ進め、未処理のメッセージブロックがある場合は処理をステップS29へ進める。なお、MB1の総数xとMB2の総数yが異なる場合は、何れか数が多い方のメッセージブロックについてステップS28の判定を行う。言い換えれば、x1≦iかつy1≦iがループ処理の終了条件である。未処理のメッセージブロックがある場合、スイッチ17は、二次中間データEXEXをレジスタ14に設定し、メッセージカウンタiをインクリメントし、処理をステップS25に戻す。また、メッセージブロックのすべてが処理された場合、スイッチ17は二次中間データEXEXを分割部18に出力し、分割部18は二次中間データEXEXをハッシュ値H1とH2に分割して出力する。[メインルーチン処理部]図3のブロック図によりメインルーチン処理部15の構成例を説明する。●分割部分割部31は、レジスタ14から入力したRRを順に所定ビット長の複数のビット系列AHに分割する。アルゴリズムと分割の関係は次のようになる。──────┬─────────┬───────┬────────アルゴリズム│入力RR│使用ビット系列│未使用ビット系列──────┼─────────┼───────┼────────MD5│64ビット長、四つ│AD│EHSHA1│64ビット長、五つ│AE│FHSHA224│64ビット長、八つ│AH│-SHA256│64ビット長、八つ│AH│-SHA384│128ビット長、八つ│AH│-SHA512│128ビット長、八つ│AH│-──────┴─────────┴───────┴────────●ワード設定部ワード設定部32と33は、メッセージブロックMB1とMB2を入力する。そして、アルゴリズムごとに決められた下記の演算により、メッセージブロックMB1とMB2を処理して、処理結果のメッセージブロックMX1とMX2を出力するワード設定処理を行う。ifMX1MB1;MX2MB2;...ififMXntMBnt;ifMXntROTL1;...ここで、は排他的論理和演算子、ROTL1は1ビット左巡回シフト演算を表す、MBnは512ビット長のMB1またはMB2、MBntはMBnを16分割した32ビット長のデータのt番目のデータ、MXnはワード設定処理の処理結果MX1またはMX2、MXntは80個のブロックで構成されるMXnのt番目のデータ。左巡回シフト演算ROTLは、最左端からシフトアウトしたビットを最右端から挿入するシフト処理である。SHA1の場合は、32ビットの範囲で左巡回シフトを行い、33ビット目以降にシフトされたビットを1ビット目から順に挿入することになる。ififMXntMBnt;ifMXntF1MXnt7F0MXnt16;...ここで、MBnは512ビット長のMB1またはMB2、MXntは64個のブロックで構成されるMXnのt番目のデータ。式における関数F0とF1は下式で示される。F0ROTR7ROTR18SHR3F1ROTR17ROTR19SHR10...ここで、ROTRmはmビット右巡回シフト演算を表す、SHRmはmビット右シフト演算を表す。右巡回シフト演算ROTRは、最右端からシフトアウトしたビットを最左端から挿入するシフト処理である。SHA224とSHA256の場合は、32ビットの範囲で右巡回シフトを行い、1ビット目から右にシフトされたビットを32ビット目から順に挿入することになる。ififMXntMBnt;ifMXntF3MXnt7F2MXnt16;...ここで、MBnは1024ビット長のMB1またはMB2、MXntは80個のブロックで構成されるMXnのt番目のデータ。式における関数F2とF3は下式で示される。F2ROTR1ROTR8SHR7F3ROTR19ROTR61SHR6...なお、SHA384とSHA512の場合は、64ビットの範囲で右巡回シフトを行い、1ビット目から右にシフトされたビットを64ビット目から順に挿入することになる。●連結部連結部40は、メッセージブロックMX1とMX2を入力し、それらを連結した結合データMX1MX2を出力する。MD5、SHA1、SHA224、SHA256の場合、メッセージブロックMX1とMX2はそれぞれ32ビットであり、出力される結合データMX1MX2は64ビットである。SHA384、SHA512の場合、メッセージブロックMX1とMX2はそれぞれ64ビットであり、出力される結合データMX1MX2は128ビットである。ワード設定部32と33、連結部40は、後段のラウンド処理部3437の何れかが処理を実行する度に、ワード設定処理と連結処理を実行し、結合データMX1MX2を出力する。その結果、ラウンド処理3437それぞれに対して異なる結合データMX1MX2が出力される。●ラウンド処理部ラウンド処理部3437は、ビット系列AH、結合データMX1MX2、初期値保持部4144が保持する初期値を入力し、アルゴリズムによって定義された所定のラウンド処理をビット系列に施した処理結果のビット系列を出力する。詳細は後述するが、一段目のラウンド処理部34はビット系列AHを入力し、二段目以降のラウンド処理部3537はそれぞれ前段のラウンド処理部が出力するビット系列を入力する。●加算部詳細は後述するが、加算部4552はそれぞれ、分割部31が出力するビット系列と、ラウンド処理部37が出力するビット系列を入力し、それらビット系列を加算した加算結果を出力する。なお、MD5の場合は、使用ビット系列がADであり、加算部4952の処理は実行されない。また、SHA1の場合は、使用ビット系列がAEであり、加算部5052の処理は実行されない。●初期値保持部初期値保持部4144はそれぞれ、アルゴリズムごとに定義された初期値t1t4を保持する。例えば、初期値保持部41は、保持する初期値t1を二つ連結した初期値t1t1をラウンド処理部34に出力する。他の初期値保持部4244も同様に保持する初期値を二つ連結した初期値を出力する。アルゴリズムと初期値の関係は、MD5の場合は後述するMD5によるラウンド処理のtjが初期値であり、SHA1、SHA2の場合は後述するSHA1、SHA2によるラウンド処理のKjが初期値である。●結合部結合部320は、加算部4552から加算結果のビット系列を入力し、加算結果のビット系列を結合して、メインルーチン処理部15の出力として一次中間データDDを出力する。●メインルーチン処理図4のフローチャートによりメインルーチン処理を説明する。なお、図4は、本実施例に適応可能な結合データの加算処理を示す。ワード設定部32、33は、分割部12からメッセージブロックMB1、MB2を入力してワード設定処理を行う。連結部40は、MX1、MX2を連結する。次に、分割部31は、レジスタ14からRRを入力して、RRを順に所定ビット長の複数のビット系列AHに分割する。そして、ラウンド処理の段数をカウントするカウンタjの値を1に設定する。次に、カウント値jに応じてラウンド処理部3437の処理が繰り返される。例えばカウント値j1の場合は、ラウンド処理部34が初期値保持部41が保持する初期値t1t1、結合データMX1MX2、ビット系列を入力して、一段目のラウンド処理を実行する。ラウンド処理が終了するとカウンタjはインクリメントされる。次に、カウント値jが判定され、j<5であれば処理はステップS45に戻り、カウント値jに対応するラウンド処理部の処理が実行される。カウント値j5になるとラウンド処理が終了し、加算部4552は、分割部31が分割したビット系列と、ラウンド処理部37が出力するビット系列を加算処理する。そして、結合部38は、加算結果のビット系列を結合して一次中間データDDを出力する。[ラウンド処理]●MD5におけるラウンド処理図5のブロック図によりラウンド処理部のMD5ラウンド処理を説明する。入力スイッチ501は、初期の入力データビット系列ADまたは出力スイッチ509から渡されるデータADを入力する。そして、データAまたはAを加算処理部503に出力し、データBDまたはBDを非線形処理部502と並べ替え部508に出力する。なお、初期の入力データADは、分割部31または一つ前のラウンド処理部が出力するビット系列ADに相当する。非線形処理部502は、データBDまたはBDに非線形処理を施し、処理結果rを加算処理部503に出力する。なお、非線形処理の内容は後述するラウンドステップ回数kの範囲ごとに異なる。ifr;非線形処理関数F...ifr;非線形処理関数G...ifrBCD;非線形処理関数H...ifrC;非線形処理関数I...ここで、は論理積演算子、は論理和演算子、は否定演算子、^は排他的論理和演算子。加算処理部503は、データrとデータAまたはAを加算した結果r1を加算処理部504に渡す。加算処理部504は、データr1とデータMkを加算した結果r2を加算処理部505に渡す。なお、データMkはステップ回数kごとに異なるデータである。加算処理部505は、データr2とデータtkを加算した結果r3を左巡回処理部506に渡す。なお、データtkはステップ回数kごとに異なる入力データである。左巡回処理部506は、データr3を左巡回シフトした結果r4を加算処理部507に渡す。上述したように、MD5の場合、32ビットの範囲の左巡回シフトを行い、33ビット目以降にシフトされたビットを1ビット目から順に挿入する。加算処理部507は、データr4とデータBを加算した結果r5を並べ替え部508に渡す。並べ替え部508は、詳細は後述するが、データr5更新されたデータA、データB、C、DをデータADに並べ替えた結果を出力スイッチ509に渡す。出力スイッチ509は、ラウンド処理の終了を判定し、終了の場合は、並べ替え部509が出力するデータADを出力データADとして出力する。また、終了ではない場合は、並べ替え部509が出力するデータADとして入力スイッチ501に渡す。図6のフローチャートによりMD5ラウンド処理を説明する。ラウンド処理部は、カウンタkを0に初期化し、カウンタkのカウント値ステップ回数kにより処理を分岐する。k015の場合は非線形処理関数Fによる非線形処理をデータAまたはAに施す。また、k1631の場合は非線形処理関数Gによる非線形処理をデータAまたはAに施す。k3247の場合は非線形処理関数Hによる非線形処理をデータAまたはAに施す。k4863の場合は非線形処理関数Iによる非線形処理をデータAまたはAに施す。次に、ラウンド処理部は、非線形処理結果のデータrとデータAまたはAを加算し、データr1とデータMkを加算する。さらに、データr2とデータtkを加算し、データr3をsビット左巡回シフトし、データr4にデータBを加算する。次に、ラウンド処理部は、データr5、B、C、Dを並べ替える。図7によりステップ回数kに対するデータMk、データtk、左巡回シフトのビット数s、並べ替えの規則の関係を示す。例えば、ステップk0において、更新されたデータAr5、B、C、Dは、A→D、B→A、C→B、D→Cに並べ替える。そして、ステップ数kをインクリメントし、ステップ数kが規定の回数この場合は63を超えたか否かを判定する。つまりk<64の場合は処理をステップS602に戻して、並べ替え後のデータADによってステップS602からS612の処理を繰り返す。また、k64の場合は、並べ替え後のデータADをデータA、B、C、Dとして出力し、ラウンド処理を終了する。●SHA1におけるラウンド処理図8のブロック図によりラウンド処理部のSHA1ラウンド処理を説明する。入力スイッチ601は、初期の入力データビット系列AEまたは出力スイッチ610から渡されるデータAEを入力する。そして、データAまたはAを左巡回処理部602と並べ替え部609に出力する。さらに、データBまたはBを非線形処理部603と左巡回処理部605に、データC、DまたはC、Dを非線形処理部603と並べ替え部609に、データEまたはEを加算処理部604にそれぞれ出力する。なお、初期の入力データAEは、分割部31または一つ前のラウンド処理部が出力するビット系列AEに相当する。左巡回処理部602は、データAまたはAを左巡回シフトした結果rを加算処理部606に渡す。左巡回処理部605は、データBまたはBを左巡回シフトした結果rを並べ替え部609に渡す。上述したように、SHA1の場合、32ビットの範囲の左巡回シフトを行い、33ビット目以降にシフトされたビットを1ビット目から順に挿入する。非線形処理部603は、データBDまたはBDに非線形処理を施し、処理結果rを加算処理部604に出力する。なお、非線形処理の内容はラウンドごとに異なる。ifr;非線形処理関数F...ifrBC;非線形処理関数G...ifr;非線形処理関数H...加算処理部604は、データrとデータEまたはEを加算した結果r1を加算処理部606に渡す。加算処理部606は、データr1とデータrを加算した結果r2を加算処理部607に渡す。加算処理部607は、データr2とデータWkを加算した結果r3を加算処理部608に渡す。加算処理部608は、データr3とデータKkを加算した結果r4を並べ替え部609に渡す。なお、データWkはステップ回数kごとに異なるデータである。また、データKkの値16進数を下に示す。ifKk5a827999;ifKk6ed9eba1;ifKk8f1bbcdc;ifKkca62c1d6;...並べ替え部609は、更新後のデータrとr4、および、データA、C、Dを並べ替えた結果を出力スイッチ610に渡す。出力スイッチ610は、ラウンド処理の終了を判定し、終了の場合は、並べ替え部609が出力するデータを出力データAEとして出力する。また、終了ではない場合は、並べ替え部509が出力するデータをデータAEとして入力スイッチ601に渡す。図9のフローチャートによりSHA1ラウンド処理を説明する。ラウンド処理部は、カウンタkを0に初期化し、カウンタkのカウント値ステップ回数kにより処理を分岐する。k019の場合は非線形処理関数Fによる非線形処理をデータBまたはBに施す。また、k2039の場合は非線形処理関数Gによる非線形処理をデータBまたはBに施す。k4059の場合は非線形処理関数Hによる非線形処理をデータBまたはBに施す。k6079の場合は非線形処理関数Gによる非線形処理をデータBまたはBに施す。次に、ラウンド処理部は、データAまたはAを5ビット左巡回シフトし、データBまたはBを30ビット左巡回シフトする。さらに、非線形処理結果のデータrとデータEまたはEを加算し、データr1とデータrを加算する。さらに、データr2とデータWkを加算し、データr3とデータKkを加算する。次に、ラウンド処理部は、データAr4、BA、Cr、DC、EDに並べ替える。そして、ステップ数kをインクリメントし、ステップ数kが規定の回数この場合は79を超えたか否かを判定する。つまりk<80の場合は処理をステップS622に戻して、並べ替え後のデータAEによってステップS622からS633の処理を繰り返す。また、k80の場合は、並べ替え後のデータAEをデータAEとして出力し、ラウンド処理を終了する。●SHA2におけるラウンド処理図10のブロック図によりラウンド処理部のSHA2SHA224、SHA256、SHA384、SHA512ラウンド処理を説明する。入力スイッチ701は、初期の入力データビット系列AHまたは出力スイッチ714から渡されるデータAHを入力する。データAまたはAを非線形処理部702、非線形処理部703および並べ替え部713に出力する。データB、CまたはB、Cを非線形処理部703と並べ替え部713に出力する。データDまたはDを加算処理部711に出力する。データEまたはEを非線形処理部704、非線形処理部705および並べ替え部713に出力する。データF、GまたはF、Gを非線形処理部704と並べ替え部713に出力する。データHまたはHを加算処理部706に出力する。なお、初期の入力データAHは、分割部31または一つ前のラウンド処理部が出力するビット系列AHに相当する。非線形処理部702は、データAまたはAに下式に示す非線形処理を施し、処理結果r1を加算処理部710に渡す。if;if;r1ROTRXROTRYROTRZ;...非線形処理部703は、データACまたはACに下式に示す非線形処理を施し、処理結果r2を加算処理部710に渡す。なお、SHA224、SHA256の場合、下式は32ビット単位で実行される。また、SHA384、SHA512の場合、下式は64ビット単位で実行される。r2...非線形処理部704は、データEGまたはEGに下式に示す非線形処理を施し、処理結果r1を加算処理部706に渡す。r1...非線形処理部705は、データEまたはEに下式に示す非線形処理を施し、処理結果r2を加算処理部707に渡す。なお、SHA224、SHA256の場合、32ビットの範囲で右巡回シフトである。また、SHA384、SHA512の場合、64ビットの範囲での右巡回シフトである。if6、11、25;if14、18、41;r2ROTRXROTRYROTRZ;...以下で説明する加算処理は、SHA224、SHA256の場合は32ビット単位で、SHA384、SHA512の場合は64ビット単位で行われる。加算処理部710は、データr1とデータr2を加算処理し、処理結果r3を加算処理部712に渡す。加算処理部706は、データHまたはHとデータr1を加算処理し、処理結果r3を加算処理部707に渡す。加算処理部707は、データr2とデータr3を加算処理し、処理結果r4を加算処理部708に渡す。加算処理部708は、データr4とデータWkを加算処理し、処理結果r5を加算処理部709に渡す。加算処理部709は、データr5とデータKkを加算処理し、処理結果r6を加算処理部711と712に渡す。なお、データWk、Kkはステップ回数kごとに異なるデータである。データKkはSHA224、SHA256の場合は32ビットの64個の固定値であり、SHA224、SHA256の場合は64ビットの80個の固定値である。加算処理部711は、データr3とデータr6を加算処理し、処理結果r4を並べ替え部713に渡す。加算処理部712は、データDまたはDとデータr6を加算処理し、処理結果r5を並べ替え部713に渡す。並べ替え部713は、A、B、C、更新後のデータr4、r5、データE、F、GをデータAHに並べ替えた結果を出力スイッチ714に渡す。出力スイッチ714は、ラウンド処理の終了を判定し、終了の場合は、並べ替え部713が出力するデータAHを出力データAHとして出力する。また、終了ではない場合は、並べ替え部713が出力するデータAHを入力スイッチ701に渡す。図11のフローチャートによりSHA2ラウンド処理を説明する。ラウンド処理部は、カウンタkを0に初期化し、式によりデータAまたはAに非線形処理を施す。さらに、式によりデータACまたはACに非線形処理を施し、式によりデータEGまたはEGに非線形処理を施し、式によりデータEまたはEに非線形処理を施す。次に、ラウンド処理部は、式の非線形処理の結果r1と式の非線形処理の結果r2を加算する。また、データHまたはHと式の非線形処理の結果r1を加算し、データr3と式の非線形処理の結果r2を加算する。そして、データr4とデータWkを加算し、データr5とデータKkを加算する。さらに、データDまたはDとデータr6を加算し、データr3とデータr6を加算する。次に、ラウンド処理部は、データAr4、BA、CB、DC、Er5、FE、GF、HGに並べ替える。そして、ステップ数kをインクリメントし、ステップ数kが規定の回数を超えたか否かを判定する。つまり、SHA224、SHA256の場合はk<64であれば処理をステップS642に戻す。また、SHA384、SHA512の場合はk<80であれば処理をステップS642に戻し、並べ替え後のデータAHによってステップS642からS653の処理を繰り返す。また、ステップ数kが規定の回数を超えた場合は、並べ替え後のデータAHをデータAHとして出力し、ラウンド処理を終了する。[加算処理]図12のブロック図により結合データの加算処理を説明する。判定部801は、結合データX第一の結合データおよび結合データY第二の結合データ、並びに、アルゴリズムIDを入力し、アルゴリズムIDに従い結合データXとYを64ビット分割部802または32ビット分割部803に出力する。結合データXとYは、32ビットまたは64ビット長の独立したデータ二つを結合したデータである。例えば、図3に示すラウンド処理部37の出力Aや分割部31の出力Aが結合データXとYである。また、アルゴリズムIDは、ハッシュ関数の種類を特定するための情報であり、結合データを分割する際の分割データのビット長の決定に利用される。判定部801は、アルゴリズムIDがSHA512またはSHA384を示す場合、結合データXとYをそれぞれA128、B128として64ビット分割部802へ出力する。一方、アルゴリズムIDがSHA512、SHA384以外を示す場合は、結合データXとYをそれぞれA64、B64として32ビット分割部803へ出力する。64ビット分割部802は、入力される結合データA128、B128をそれぞれを分割する。そして、結合データA128から上位64ビットを分割した上位ビットデータA641と、結合データB128から上位64ビットを分割した上位ビットデータB641を加算処理部804へ出力する。また、結合データA128から下位64ビットを分割した下位ビットデータA642と、結合データB128から下位64ビットを分割した下位ビットデータB642を加算処理部805へ出力する。32ビット分割部803は、入力される結合データA64、B64をそれぞれを分割する。そして、結合データA64から上位32ビットを分割した上位ビットデータA321と、結合データB64から上位32ビットを分割した上位ビットデータB311を加算処理部806へ出力する。また、結合データA64から下位32ビットを分割した下位ビットデータA322と、結合データB64から下位32ビットを分割した下位ビットデータB322を加算処理部807へ出力する。加算処理部804は、上位ビットデータA641とB641を加算した上位ビットデータ641を出力する。同様に、加算処理部805は、下位ビットデータA642とB642を加算した下位ビットデータ642を出力する。その際、加算処理部804と805は、最上位ビットの加算で桁上がりが発生した場合も、発生した桁上がりを無視した64ビットの加算結果を出力する。加算処理部806は、上位ビットデータA321とB321を加算した上位ビットデータ321を出力する。同様に、加算処理部807は、下位ビットデータA322とB322を加算した下位ビットデータ322を出力する。その際、加算処理部806と807は、最上位ビットの加算で桁上がりが発生した場合も、発生した桁上がりを無視した32ビットの加算結果を出力する。128ビット結合部808は、上位ビットデータ641と下位ビットデータ642を入力して、それらデータを結合した128ビット長のデータMを出力する。同様に、64ビット結合部709は、上位ビットデータデータ321と下位ビットデータ322を入力し、それらデータを結合した64ビット長のデータM第三の結合データを出力する。図13により結合データの加算処理を説明する。図13に示すように、結合データ901と904はそれぞれ上位ビットデータと下位ビットデータに分割され、分割データ902、903、905、906が生成される。そして、上位ビットデータである分割データ902と905が加算処理907され、下位ビットデータである分割データ903と906が加算処理908される。そして、加算処理結果であるデータ909と910を結合して再結合データ911にする。図13は結合データを分割せずに加算処理を行う例を示す。この場合、下位ビットデータ903と906の加算処理演算914において最上位ビットで桁上がりが発生すると、再結合データ915の上位ビットデータ916の最下位ビットに桁上がりが反映される問題が生じる。これを抑制するには、桁上がりをマスク処理する必要があり、処理速度が低下する。例えば4ビットの結合データの加算を例に説明する。結合データXを‘1010’二進数、結合データYを‘0011’とする。結合データXとYの下位ビットデータ‘10’と‘11’を加算すると‘101’になり桁上がりが発生し、再結合データは‘1101’になる。つまり、下位2ビットデータの最上位ビットの桁上がりが上位2ビットデータの最下位ビットに影響する。本実施例においては、桁上がりを無視するため、結合データXとYの下位ビットデータ‘10’と‘11’の加算結果は‘01’であり、再結合データは‘1001’になり、桁上がりによる上位ビットデータへの影響を回避することができる。[変形例]図12には二つの結合データX、Yの加算処理を示したが、三つ以上のデータを結合した結合データの加算処理に本実施例を適用することができる。図14により三つ以上のデータを結合した結合データの加算処理を説明する。図14に示すアルゴリズム表から分割データのサイズを取得し、取得した分割データのサイズ単位に、三つ以上の結合データそれぞれを上位ビットまたは下位ビットから順次分割し、複数個の分割データを生成する。そして、分割データのサイズ長のレジスタに分割データを格納し、レジスタ同士の加算を行い、加算結果を結合する。加算するレジスタの組み合わせは、分割位置が対応する分割データを格納するレジスタ同士である。例えば、6ビットの結合データA‘100100’と結合データB‘001001’を2ビットに分割して加算する場合、加算の組み合わせは上位ビットから順に‘10’と‘00’、‘01’と‘10’、‘00’と‘01’である。勿論、桁上がりは無視する。このように、二つのデータを結合した結合データを構成する各データの独立性を維持して結合データを高速に加算処理することができる。つまり、結合データを処理する並列処理における結合データの加算処理は、結合データから分割した上位ビットデータと下位ビットデータそれぞれを加算処理し、二つの加算結果を結合することで、結合データを高速に加算処理することができる。以下、本発明にかかる実施例2の演算処理を説明する。なお、実施例2において、実施例1と略同様の構成については、同一符号を付して、その詳細説明を省略する。実施例1では、二つのメッセージに対してメインルーチンで適用するハッシュアルゴリズムのアルゴリズム処理単位の長さが同一の場合を説明した。実施例2では、アルゴリズム処理単位の長さが異なる場合を説明する。なお、実施例2におけるシステム構成と処理、メインルーチン処理部、および、各ハッシュアルゴリズムに対するラウンド処理は実施例1と同一であり、その詳細説明を割愛する。[加算処理]図15のブロック図により実施例2の結合データの加算処理を説明する。判定部811は、結合データXとY、および、アルゴリズムIDおよびアルゴリズムIDに関連付けられた処理対象のビットを示す情報を入力し、アルゴリズムIDに従い結合データXとYを64ビット分割部812または32ビット分割部813に出力する。結合データXとYは、32ビット長または64ビット長の独立したデータX1およびX2、Y1およびY2を結合したデータである。なお、結合データXとYを構成するデータのビット長は異なり、例えば結合データXは64ビット長のデータX1と32ビット長のデータX2を結合したデータである。アルゴリズムIDは、ハッシュ関数の種類を特定するための情報である。また、処理対象のビットを示す情報以下、対象ビット情報は、結合データを構成するデータのうちの何れかを指示し、例えば上位64ビットと指定されている。判定部811は、アルゴリズムIDがSHA512またはSHA384を示すと判定した場合は、結合データXとY、および、対象ビット情報819を64ビット分割部812に出力する。一方、アルゴリズムIDがSHA512、SHA384以外を示すと判定した場合は、結合データXとY、および、対象ビット情報820を32ビット分割部813に出力する。64ビット分割部812は、対象ビット情報819に従い、結合データXとYをそれぞれを分割する。例えば、対象ビット情報819が上位64ビットを示す場合、結合データXの上位64ビットを分割した上位ビットデータA641と、結合データYの上位64ビットを分割した上位ビットデータB641を加算処理部804へ出力する。つまり、対象ビット情報819が上位64ビットを示す場合は、判定部811から入力される96ビット長の結合データXとYの上位64ビットを分割する。また、対象ビット情報819が下位64ビットを示す場合は、96ビット長の結合データXとYの下位64ビットを分割する。32ビット分割部813は、対象ビット情報820に従い、結合データXとYをそれぞれ分割する。例えば、対象ビット情報820が下位32ビットを示す場合、結合データXの下位32ビットを分割した下位ビットデータA322と、結合データYの下位32ビットを分割した下位ビットデータY322を加算処理部807へ出力する。つまり、対象ビット情報820が下位32ビットを示す場合は、判定部811から入力される96ビット長の結合データXとYの下位32ビットを分割する。また、対象ビット情報820が上位32ビットを示す場合は、96ビット長の結合データXとYの上位32ビットを分割する。加算処理部804807は、図12に示した実施例1と同様の処理を行うので、その詳細説明を割愛する。結合部818は、上位ビットデータ641と下位ビットデータ322、あるいは、上位ビットデータ321と下位ビットデータ642を入力し、それらデータを結合した96ビット長の結合データMを出力する。図16のフローチャートにより実施例2の結合データの加算処理を説明する。加算処理部は、入力したアルゴリズムIDと対象ビット情報から使用するレジスタ長と処理対象のビットを判定する。アルゴリズムIDと対象ビット情報がSHA512またはSHA384上位64ビットを示す場合は96ビット長の結合データXとYをそれぞれ分割する。そして、上位64ビットの分割データA641とB641を64ビット長のレジスタに格納する。そして、分割データA641とB641を加算する。アルゴリズムIDと対象ビット情報がSHA512またはSHA384下位64ビットを示す場合は96ビット長の結合データXとYをそれぞれ分割する。そして、下位64ビットの分割データA642、B642を64ビット長のレジスタに格納する。そして、分割データA642とB642を加算する。アルゴリズムIDと対象ビット情報がSHA512、SHA384以外上位32ビットを示す場合は96ビット長の結合データXとYをそれぞれ分割する。そして、上位32ビットの分割データA321、B321を32ビット長のレジスタに格納する。そして、分割データA321とB321を加算する。アルゴリズムIDと対象ビット情報がSHA512、SHA384以外下位32ビットを示す場合、96ビット長の結合データXとYをそれぞれ分割する。そして、下位32ビットの分割データA322、B322を32ビット長のレジスタに格納する。そして、分割データA322とB322を加算する。加算処理部は、実施例1で説明したように、上記の加算処理において最上位ビットの桁上がりを無視する。そして、ステップS1603またはS1607の加算結果を上位ビットデータとして、ステップS1605またS1609の加算結果を下位ビットデータとして、それらデータを結合して96ビット長の結合データにする。[変形例]上記の実施例においては、MD5、SHA1、SHA2アルゴリズムを例に説明を行ったが、本発明の適用はこれらの演算処理に限定されない。例えば、アルゴリズム処理として加算処理を有するもの、また、入力データを格納するために上記の実施例で定義した長さのメモリ領域を有する演算装置や演算処理であれば、本発明を適用することができる。[その他の実施例]また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェアプログラムを、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステムあるいは装置のコンピュータ又はCPUやMPU等がプログラムを読み出して実行する処理である。