共通鍵暗号方式の第1暗号利用モードおよび第2暗号利用モードの演算を行う共通鍵演算部と、入力データを所定の長さに分割する分割部と、排他的論理和を演算する排他的論理和演算部と、ガロア体上の乗算を行う乗算部と、前記共通鍵演算部と、前記排他的論理和演算部と、前記乗算部を制御する制御部とを、備え、前記分割部で前記入力データを所定の長さのブロックに分割し、前記入力データを分割したブロックのj-1番目jは2以上の整数を対象として、第1暗号利用モードが指定された場合、前記制御部は、前記入力データのj-1番目jは2以上の整数のブロックに基づいて、所定の値との乗算を行うように前記乗算部を制御し、前記乗算部の乗算結果と前記入力データのうちj番目のブロックのデータとの排他的論理和を行うように前記排他的論理和演算部を制御し、前記排他的論理和演算部の演算結果とj-1番目のブロックに対する前記乗算部の演算結果との排他的論理和を行うように前記排他的論理和演算部を制御し、前記分割部で前記入力データを所定の長さのブロックに分割し、前記入力データを分割したブロックのj-1番目jは2以上の整数を対象として、第2暗号利用モードが指定された場合、前記制御部は、前記入力データのj-1番目のブロックに対する前記共通鍵演算部の演算結果と前記入力データのうちj番目のブロックのデータとの排他的論理和を行うように前記排他的論理和演算部を制御し、前記排他的論理和演算部の演算結果に対して前記第1暗号利用モードおよび前記第2暗号利用モードの演算を前記共通鍵演算部で行うように制御する暗号演算装置。前記共通鍵演算部は、前記共通鍵暗号方式の復号演算を行い、前記入力データのうち、いずれかのブロックのデータを記憶する第1レジスタをさらに備え、前記分割部で前記入力データを所定の長さのブロックに分割し、前記入力データを分割したブロックのj-1番目を対象として、第2暗号利用モードでの復号演算が指定された場合、前記制御部は、前記入力データのうちj-1番目のブロックのデータを前記第1レジスタに記憶し、前記入力データのうちj番目のデータの復号演算を前記共通鍵演算部で行うように制御し、復号演算の演算結果と前記第1レジスタに記憶されたj-1番目のブロックのデータとの排他的論理和を行うように前記排他的論理和演算部を制御する、請求項1に記載の暗号演算装置。前記入力データのうち、いずれかのブロックのデータを記憶する第2レジスタをさらに備え、前記分割部で前記入力データを所定の長さのブロックに分割し、前記入力データを分割したブロックのj-1番目を対象として、第1暗号利用モードでの復号演算が指定された場合、制御部は、前記入力データのうちj-1番目のブロックのデータを前記第2レジスタに記憶し、前記入力データのうちj番目のデータの復号演算を前記共通鍵演算部で行うように制御し、復号演算の演算結果と前記第2レジスタに記憶されたj-1番目のブロックのデータとの排他的論理和を行うように前記排他的論理和演算部を制御し、前記入力データのうちj番目のブロックのデータを前記第1レジスタに記憶する、請求項2に記載の暗号演算装置。前記第1暗号利用モードは、XTSXEXencryptionmodewithtweakandciphertextstealingモードであり、前記第2暗号利用モードは、CBCCipherBlockChainingモードである、請求項1に記載の暗号演算装置。前記共通鍵演算部での演算で用いられる複数の鍵データのうち、前記制御部からの指示に応じた前記鍵データを選択して出力する鍵選択部をさらに備える、請求項1に記載の暗号演算装置。しかしながら、従来は、CBCモードが主に利用されている。従って、従来のシステムとの互換性を維持するためには、ストレージデバイス内のデータの暗号化方式として、XTSモードだけではなく、従来のCBCモードにも対応する必要がある。すなわち、XTSモードとCBCモードの2つの利用モードに対応した暗号化回路が必要である。実施形態の暗号演算装置は、共通鍵演算部と、排他的論理和演算部と、乗算部と、制御部とを備える。共通鍵演算部は、共通鍵暗号方式の第1暗号利用モードおよび第2暗号利用モードの演算を行う。排他的論理和演算部は、排他的論理和を演算する。乗算部は、ガロア体上の乗算を行う。制御部は、第1暗号利用モードの演算が指定された場合に、入力データを第1暗号利用モードで演算した出力データを算出する第1演算処理を制御し、第2暗号利用モードの演算が指定された場合に、入力データを第2暗号利用モードで演算した出力データを算出する第2演算処理を制御する。以下に添付図面を参照して、この発明にかかる暗号演算装置の好適な実施形態を詳細に説明する。第1の実施形態第1の実施形態にかかる暗号演算装置は、XTSモードとCBCモードとで利用する演算部回路で共通化可能な演算部を共通化する。そして、各演算部を、指定された暗号利用モードに応じた演算を実行するように制御する。図1は、第1の実施形態にかかる暗号演算装置1の回路構成の一例を示すブロック図である。図1に示すように、暗号演算装置1は、セレクタ2と、排他的論理和演算部3と、共通鍵演算部4と、排他的論理和演算部5と、セレクタ6と、乗算部7と、セレクタ8と、マスク値レジスタ9と、制御部16と、分割部20と、を備えている。暗号演算装置1は、鍵選択部15に接続されている。鍵選択部15は、制御部16からの指示に応じた鍵データを選択して共通鍵演算部4に出力する。なお、鍵選択部15を暗号演算装置1内に備えるように構成してもよい。分割部20は、暗号演算装置1に入力された暗号演算または復号演算の対象となる入力データ10’を所定の長さ固定長に分割する。例えば、分割部20は、入力データ10’を、128ビット長のブロックに分割する。なお、分割部20を暗号演算装置1の外部に備えるように構成してもよい。以下では、分割部20により入力データ10’を固定長に分割したデータを単位として処理が行われる。以下では入力データ10’を分割したデータを入力データ信号10という。セレクタ2は、制御部16からの指示に応じて、入力データ信号10および初期値入力信号11のいずれかを選択する。排他的論理和演算部3は、セレクタ2の出力とセレクタ6の出力との排他的論理和を算出する。共通鍵演算部4は、排他的論理和演算部3の演算結果と鍵選択部15により選択された鍵データとを用いて、制御部16により指示された暗号利用モードでの演算を実行する。本実施形態では、共通鍵演算部4は、共通鍵方式ブロック暗号方式の暗号アルゴリズムのXTSモードおよびCBCモードでの演算処理を実行する。なお、演算処理には、入力データの暗号化以下、暗号演算、および、暗号化したデータの復号以下、復号演算を含むものとする。排他的論理和演算部5は、セレクタ6の出力と共通鍵演算部4の演算結果との排他的論理和を算出する。セレクタ6は、制御部16からの指示に応じて、所定値と、マスク値レジスタ9の値と、初期値入力信号11とのうちいずれかを選択する。図1では、所定値を0とした例が示されているが、所定値は0以外であってもよい。乗算部7は、ガロア体上の乗算を行う。具体的には、乗算部7は、マスク値レジスタ9の値と、予め定められたガロア体の原始多項式αのj乗jは入力データを固定長に分割したブロックの順序を表す番号とを乗算した結果を出力する。セレクタ8は、制御部16からの指示に応じて、乗算部7の演算結果と、排他的論理和演算部5の演算結果と、入力データ信号10と、初期値入力信号11とのうちいずれかを選択する。マスク値レジスタ9は、セレクタ8の出力を記憶する。制御部16は、XTSモードが指定された場合に、入力データをXTSモードで演算した出力データを算出する処理、および、CBCモードが指定された場合に、入力データをCBCモードで演算した出力データを算出する処理を制御する。各処理の詳細は後述する。次に、このように構成された第1の実施形態にかかる暗号演算装置1による演算処理について説明する。最初に、XTSモードの演算処理について説明する。図2は、第1の実施形態におけるXTSモードの演算処理の全体の流れを示すフローチャートである。なお、図2の各ステップは、制御部16が、上述の各構成部セレクタ2、排他的論理和演算部3、共通鍵演算部4、排他的論理和演算部5、セレクタ6、乗算部7、セレクタ8、および、マスク値レジスタ9のうち必要な構成部を制御することにより実行される。制御部16による各構成部の制御方法の詳細は後述するため、図2の説明では省略する。図2に示すように、XTSモードでは、暗号演算装置1の共通鍵演算部4は、鍵Key2と初期値セクター番号とブロック番号j=1とから、マスク値T1を生成するステップS101。次に、分割部20は、暗号化する入力データを分割する。排他的論理和演算部3は、分割後のデータとマスク値Tjとの排他的論理和演算を行いPP=PjxorTjを算出するステップS102。なお、平文Pjは、暗号化する平文全体をm個mは2以上の整数のブロックに分割したときの、j番目のブロックの平文を表す。また、マスク値Tjは、j番目のブロックの処理で用いるマスク値を表す。以下では、128ビット長のブロックに分割する場合を例に説明するが、ブロック長は128ビットに限られるものではない。共通鍵演算部4は、鍵Key1を用いて排他的論理和演算の結果PPを暗号化し、データCCを算出するステップS103。排他的論理和演算部5は、データCCとマスク値Tjとの排他的論理和演算を行い、暗号文Cj=CCxorTjを算出するステップS104。制御部16は、jに1を加算するステップS105。乗算部7は、Tj=Tj-1×αjによりマスク値を更新するステップS106。制御部16は、jがm-1mは総ブロック数より小さいか否かを判断するステップS107。jがm-1より小さい場合ステップS107:Yes、ステップS102に戻り処理を繰り返す。jがm-1に達した場合ステップS107:No、制御部16は、平文Pmの長さがブロック長である128ビットと一致するか否かを判断するステップS108。平文Pmの長さが128ビットと一致する場合はステップS108:Yes、残りのブロックであるm-1番目およびm番目のブロックについて、ステップS109~ステップS113を繰り返す。なお、ステップS109~ステップS113は、ステップS102~ステップS106と同様の処理であるため説明を省略する。jがmに達した場合ステップS114:Yes、すなわち、m番目のブロックまで処理した場合、演算処理を終了する。ステップS108で、平文Pmの長さが128ビットと一致しない場合ステップS108:No、排他的論理和演算部3は、平文Pm-1とマスク値Tm-1との排他的論理和演算を行いPP=Pm-1xorTm-1を算出するステップS115。共通鍵演算部4は、鍵Key1を用いて排他的論理和演算の結果PPを暗号化し、データCCを算出するステップS116。排他的論理和演算部5は、データCCとマスク値Tm-1との排他的論理和であるCCxorTm-1を算出する。共通鍵演算部4は、CCxorTm-1の上位kビットkはPmの長さである暗号文Cmを算出するステップS117。共通鍵演算部4は、Pmと、CCxorTm-1の下位lビットlはブロック長-Pmの長さとを連結したデータPP’を算出するステップS118。共通鍵演算部4は、鍵Key1を用いてデータPP’を暗号化したデータCCを算出するステップS119。排他的論理和演算部5は、データCCとマスク値Tmとの排他的論理和演算を行い、暗号文Cm-1=CCxorTmを算出しステップS120、演算処理を終了する。次に、XTSモードの暗号演算の手順についてさらに説明する。最初は、モード指定信号12がアサートされ、XTSモードの演算を行うための設定が行われる。なお、モード指定信号12などの制御部16に入力される各信号は、例えば暗号演算装置1に接続される図示しない外部装置によりアサートまたはディアサートされる。マスク値Tの生成を知らせるマスク値生成信号13がアサートされ、マスク値Tを生成するための初期値が初期値入力信号11に入力され、起動信号18がアサートされる。起動信号18がアサートされることで、制御部16は、図示しない制御信号線を通じて、セレクタ6に対して所定値0を出力するように信号を送る。また、制御部16は、セレクタ2に対して図示しない制御信号線を通じてマスク値生成であることを通知する。セレクタ2は、制御部16からの指示で初期値初期値入力信号11を選択する。セレクタ2による出力結果は排他的論理和演算部3に入力される。排他的論理和演算部3は、セレクタ2の出力結果とセレクタ6の出力結果とに対して排他的論和演算を行う。排他的論理和演算部3の演算結果は、共通鍵演算部4に入力される。一方、マスク値Tを生成するためのマスク値生成信号13と起動信号18とがアサートされることで、制御部16は、図示しない制御信号線を通じて、鍵選択部15へマスク値生成であることを通知する。鍵選択部15は、XTSモードのマスク値生成であることを判断すると、マスク値生成に必要な鍵Key2を選択し、共通鍵演算部4に入力する。共通鍵演算部4は、初期値と鍵Key2とが入力されると、マスク値Tの演算を開始する図2のステップS101。マスク値Tの演算が終了すると、制御部16は、マスク値レジスタ9に対して、マスク値Tの書き込みを行うための信号を図示しない制御信号線を通じて送る。これにより、マスク値Tがマスク値レジスタ9に保存される。次に、平文Pjの暗号化を行うために、マスク値生成信号13がディアサートされ、平文が入力データ信号10に入力され、起動信号18がアサートされる。このとき、マスク値生成信号13がディアサートされることで、制御部16は、鍵選択部15に対して、平文の暗号演算であることを通知する。鍵選択部15は、鍵Key1を選択して共通鍵演算部4に入力する。また、図示していない暗号演算装置1の制御およびデータの入力を管理している装置により、モード指定信号12がアサートされ、マスク値生成信号13がディアサートされているとき、制御部16は、セレクタ2に対して入力データ信号10の値を選択するように通知する。セレクタ2は、入力データ信号10の入力データを選択して出力する。また、制御部16は、セレクタ6に対してマスク値レジスタ9の値を選択するように指示する。セレクタ6は、マスク値レジスタ9の値を選択して出力する。次に、排他的論理和演算部3は、セレクタ6の出力値であるマスク値レジスタ9の値と、セレクタ2の出力値である入力データ信号10から入力された平文との排他的論理和演算を行う図2のステップS102。演算結果は、共通鍵演算部4に入力される。共通鍵演算部4は、鍵選択部15から鍵データが入力され、排他的論理和演算部3から演算結果が入力されると演算を開始し、図示しない終了信号をアサートして演算終了を制御部16に通知するとともに演算結果を出力する図2のステップS103。排他的論理和演算部5は、共通鍵演算部4の出力結果と、セレクタ6の出力との排他的論理和を演算する図2のステップS104。排他的論理和演算部5の出力結果が暗号文として出力される。暗号文が出力されると同時に、乗算部7は、マスク値レジスタ9の値に対する乗算を演算する図2のステップS106。その演算結果はセレクタ8へ入力される。そして、セレクタ8は、制御部16からの指示に応じて、乗算部7の結果を選択する。マスク値レジスタ9は、制御部16からの指示に応じて、セレクタ8の出力結果を書き込み、暗号演算が終了する。次に、XTSモードの復号演算について説明する。XTSモードの復号演算でも、マスク値Tを生成する手順は暗号演算と同じであり、モード指定信号12とマスク値生成信号13とがアサートされ、初期値が入力される。モード指定信号12とマスク値生成信号13とがアサートされることで、制御部16は、セレクタ6に対して所定値0を出力するように指示する。また、制御部16は、セレクタ2に対して初期値入力信号11の値を選択するように指示する。さらに、鍵選択部15は、制御部16からの指示に応じて鍵Key2を選択して共通鍵演算部4へ入力する。共通鍵演算部4は、排他的論理和演算部3の出力を共通鍵演算部4の入力とし、鍵選択部15の出力を鍵データとし、これらが準備されると、マスク値Tの生成を開始する。共通鍵演算部4は、マスク値Tの演算が終了すると、図示しない終了信号をアサートして演算終了を制御部16に通知するとともにマスク値Tを出力する。このとき、セレクタ6は固定値0を選択しているので、排他的論理和演算5では、セレクタ6の出力と共通鍵演算部4の出力との演算が行われた結果、排他的論理和演算5からは共通鍵演算部4の出力結果が出力される。マスク値Tが生成されると、制御部16は、セレクタ8およびマスク値レジスタ9に対する指示を通知して、マスク値Tをマスク値レジスタ9に書き込む。次に、復号演算を行うためにマスク値生成信号13がディアサートされ、暗号文が入力データ信号10にセットされる。鍵選択部15は、鍵Key1を選択し、共通鍵演算部4へ入力する。ここで、復号演算時には、復号演算用の鍵を使うことで復号演算にかかる時間を短くすることができる場合がある。このような場合には、鍵選択部15は、鍵Key1の復号演算用鍵を選択して共通鍵演算部4に入力する。制御部16は、マスク値生成信号13がディアサートされるので、セレクタ2に対して入力データ信号10の値を選択するように指示する。制御部16は、さらにセレクタ6に対してマスク値レジスタ9の値を選択するように指示する。これにより、排他的論理和演算部3は、セレクタ6の出力とセレクタ2の出力結果との排他的論理和を算出する。その演算結果は、共通鍵演算部4に入力される。鍵選択部15の出力データである鍵データと、排他的論理和演算部3の出力データとを入力とし、制御部16から図示しない復号演算開始信号がアサートされると、共通鍵演算部4は、復号演算を開始する。共通鍵演算部4の演算が終了すると、図示しない終了信号が出力される。排他的論理和演算部5は、共通鍵演算部4の出力結果とセレクタ6の出力との排他的論理和を演算する。演算結果は、平文として出力信号線19から出力される。一方、共通鍵演算部4が図示していない終了信号をアサートすると、乗算部7は、マスク値レジスタ9の値を更新するため、マスク値レジスタ9の値を入力値として乗算を行う。乗算部7の演算結果は、セレクタ8を通じてマスク値レジスタ9に保存される。次に、CBCモードの演算処理について説明する。まず、CBCモードの暗号演算について説明する。図3は、第1の実施形態におけるCBCモードの暗号演算の全体の流れを示すフローチャートである。暗号演算装置1は、鍵Keyと初期値iと平文P1とを入力するステップS201。排他的論理和演算部3は、初期値iと平文P1との排他的論理和を演算し、共通鍵演算部4は、排他的論理和の演算結果を鍵Keyで暗号化した演算結果C1を出力するステップS202。さらに、暗号化を行う場合には、共通鍵演算部4は、鍵Keyと暗号化の演算結果Cj-1とここではjは2以上の整数平文Pjとを入力するステップS203。排他的論理和演算部3は、演算結果Ci-1と平文Piとの排他的論理和を演算し、共通鍵演算部4は、排他的論理和の演算結果を鍵Keyで暗号化した演算結果Cjを出力するステップS204。制御部16は、jに1を加算するステップS205。制御部16は、jが総ブロック数mを超えたか否かを判断しステップS206、超えていない場合ステップS206:No、ステップS203に戻り処理を繰り返す。jが総ブロック数mを超えた場合ステップS206:Yes、暗号演算装置1は、演算処理を終了する。次に、CBCモードの復号演算について説明する。図4は、第1の実施形態におけるCBCモードの復号演算の全体の流れを示すフローチャートである。暗号演算装置1は、鍵Keyと初期値iと暗号文C1とを入力するステップS301。排他的論理和演算部3は、暗号文C1を復号した演算結果DecKey、C1と、初期値iとの排他的論理和である平文P1を算出するステップS302。さらに、復号演算を行う場合には、共通鍵演算部4は、鍵Keyと初期値として用いる前のブロックの暗号文Cj-1以下、初期値Cj-1というと暗号文Cjとを入力するステップS303。排他的論理和演算部5は、共通鍵演算部4により暗号文Cjを復号した演算結果と、初期値Cj-1との排他的論理和である平文Pjを算出するステップS304。制御部16は、jに1を加算するステップS305。制御部16は、jが総ブロック数mを超えたか否かを判断しステップS306、超えていない場合ステップS306:No、ステップS303に戻り処理を繰り返す。jが総ブロック数mを超えた場合ステップS306:Yes、暗号演算装置1は、演算処理を終了する。次に、CBCモードの暗号演算の手順についてさらに説明する。CBCモードの暗号演算では、最初の演算時に初期値信号14がアサートされ、暗号演算装置1への入力信号であるモード指定信号12がディアサートされる。さらに、復号演算信号17がディアサートされ、初期値入力信号11に初期値がセットされ、入力データ信号10に平文がセットされる。さらに起動信号18がアサートされると、暗号演算装置1は暗号演算を開始する。制御部16は、初期値信号14がアサートされていること、モード指定信号12がディアサートされていること、および、復号演算信号17がディアサートされていることから、セレクタ2に対して初期値入力信号11の値を選択するように指示を出す。これにより、排他的論理和演算部3は、初期値と入力データ信号10の値との排他的論理和を演算する。その結果は共通鍵演算部4へ入力される。また、鍵選択部15は、CBCモードの暗号演算であるという指示が制御部16から送られてくるので、その指示に従った鍵データを共通鍵演算部4に送る。これにより共通鍵演算部4による暗号演算が開始される。暗号演算が終了すると、図示しない終了信号がアサートされるとともに共通鍵演算部4から暗号文が出力される。このとき、制御部16は、セレクタ6に対して0を選択することを指示する。セレクタ6は、その指示に従って0を出力する。排他的論理和演算部5は、セレクタ6の出力値と共通鍵演算部4の出力との排他的論理和を演算する。その演算結果は暗号文として出力信号線19に出力される図3のステップS202。このとき、制御部16は、次の演算のために、排他的論理和演算部5の出力結果をマスク値レジスタ9に保存するように指示する。すなわち、制御部16は、セレクタ8に対して出力信号線19の入力を選択するように指示するとともに、マスク値レジスタ9に対してデータが書き込まれるように指示する。次の平文が入力された場合には、マスク値レジスタ9に保存されている値を初期値とするので、制御部16は、セレクタ6に対してマスク値レジスタ9の値を選択するように指示する。排他的論理和演算部3は、セレクタ6の出力とセレクタ2の出力との排他的論理和を演算する。共通鍵演算部4は、この演算結果を入力し暗号演算を行う図3のステップS204。次に、CBCモードの復号演算の手順についてさらに説明する。復号演算では、制御部16は、セレクタ2に対して、入力された暗号文の選択を指示する。制御部16は、モード指定信号がディアサートされていること、復号演算信号17がアサートされていること、および、初期値信号14がアサートされていることから、セレクタ6に対して0を出力するように指示する。これと同時に、初期値入力信号11の値をマスク値レジスタ9に書き込むため、制御部16は、セレクタ8に対して初期値入力信号11の値を選択するように指示し、かつ、マスク値レジスタ9に書き込み指示を出す。上記の処理により、排他的論理和演算部3は、セレクタ6の出力とセレクタ2の出力との排他的論理和を演算する。その演算結果は共通鍵演算部4に入力される。このとき、鍵選択部15は、モード指定信号がディアサートされていることから、CBCモードのデータ用鍵データを選択して共通鍵演算部4に入力する。共通鍵演算部4は、入力データと鍵データとが入力されると、復号演算を開始する。共通鍵演算部4は、復号演算が終了すると終了信号をアサートするとともに演算結果を出力する。このとき、制御部16は、セレクタ6に対して初期値入力信号11の値を選択するように指示する。これにより、セレクタ6は、初期値入力信号11の値を選択して出力する。排他的論理和演算部5は、初期値入力信号11の値と共通鍵演算部4の出力との排他的論理和を演算し、演算結果を平文として出力する図4のステップS302。続いて復号演算を行う際には、初期値信号線がディアサートされて、入力データ信号10に暗号文が入力され、起動信号18がアサートされる。このとき、制御部16は、CBC/XTSモードがディアサート、初期値信号もディアサートされ、復号演算信号17がアサートされていることから、CBCモードの復号演算であると判断する。制御部16は、セレクタ6に対して0を選択するように指示する。この後、共通鍵演算部4が復号演算を開始する。復号演算が終了すると上記で説明したように、排他的論理和演算部5が、復号演算の演算結果と、マスク値レジスタ9の値との排他的論理和を演算する。この演算結果が平文として出力信号線19に出力される図4のステップS304。このように、第1の実施形態にかかる暗号演算装置では、図1に示すような回路構成とすることで、XTSモードの暗号演算および復号演算と、CBCモードの暗号演算および復号演算とを行うことが可能となる。第2の実施形態CBCモードの復号演算では、共通鍵演算部4による復号演算が終了した後に、マスク値レジスタ9に記憶されている初期値と復号演算の演算結果との排他的論理和が演算される。このため、マスク値レジスタ9の値は、共通鍵演算部4の演算が終了するまで変更することができない。すなわち、共通鍵演算部4の演算が終了したのち、入力データ信号10の値をマスク値レジスタ9書き込むことになる。第2の実施形態にかかる暗号演算装置は、共通鍵演算部4の演算が終了した直後に、次の復号演算のための暗号文を入力データ信号10に準備できるようにするため、入力データ信号10の値を保持する回路レジスタをさらに備える構成とする。図5は、第2の実施形態にかかる暗号演算装置1-2の回路構成の一例を示すブロック図である。図5に示すように、暗号演算装置1-2は、出力マスクレジスタ20をさらに備えたこと、および、制御部16-2の機能が、第1の実施形態と異なっている。その他の構成は、第1の実施形態のブロック図である図1と同様であるため、同一の符号を付し説明を省略する。第2の実施形態では、CBCモードの復号演算が開始されると、制御部16-2は、セレクタ8に対して入力データ信号10の値暗号文C1を保持するように指示を出し、出力マスクレジスタ20にはセレクタ6を通じて入力データ信号10の値を保持するように指示を出す。共通鍵演算部4の演算が終了した後、排他的論理和演算部5は、出力マスクレジスタ20の値と共通鍵演算部4の演算結果との排他的論理和を演算する。演算結果は平文として出力される。本実施形態では、次のブロックの演算で用いる暗号文C1の値入力データ信号10の値を出力マスクレジスタ20に保持しているため、共通鍵演算部4の演算終了と同時に入力データ信号10に次の暗号文C2を用意することができる。すなわち、暗号文C2の演算を開始するために起動信号18がアサートされると同時に、制御部16-2は、マスク値レジスタ9の値を出力マスクレジスタ20へ移動し、同時に暗号文C2をマスク値レジスタ9に書き込むことを指示する。このような処理を行うことで、共通鍵演算部4の演算が終了するとともに、次の復号演算用のデータを準備して復号演算を開始することができるようになる。すなわち、CBCモードの復号演算を高速に処理することが可能となる。なお、本実施形態は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせても良い。