(57)【要約】【課題】データ長を変えずに文字コードを暗号化できるようにする。【解決手段】  平文３が入力されると、平文符号化手段１ｂにより、平文３に含まれる文字コードが数値に変換される。次に、暗号化手段１ｄにより、平文符号化手段１ｂで得られた文字コード毎の数値が順次取得され、初期値が設定されたレジスタ１ｃの値を用いて、最初の数値が同一ビット数の暗号値に暗号化される。以後、暗号化によって得られた暗号値の少なくとも一部を用いたレジスタの値の更新と、更新されたレジスタの値を用いた数値の暗号化とが交互に繰り返され、入力された全ての数値が暗号化される。そして、文字コード生成手段１ｅにより、暗号化手段１ｄで得られた各暗号値が文字コードに変換され、暗号文４が生成される。【選択図】  図１
2007065253.tif 000002
【特許請求の範囲】
【請求項１】
文字コードを暗号化するための文字コード暗号処理プログラムにおいて、
コンピュータを、
所定の文字コード体系の文字コードと所定のビット長の数値との間で相互に変換するための対応関係が登録された少なくとも１つの変換テーブルを記憶する変換テーブル記憶手段、
少なくとも１つの文字コードで構成される平文が入力されると、前記平文を構成する文字コードの文字コード体系に対応する前記変換テーブルを参照し、前記平文に含まれる文字コードを数値に変換する平文符号化手段、
前記平文符号化手段で得られた文字コード毎の数値を順次取得し、初期値が設定されたレジスタの値を用いて、最初の数値を同一ビット数の暗号値に暗号化し、以後、暗号化によって得られた暗号値の少なくとも一部を用いた前記レジスタの値の更新と、更新された前記レジスタの値を用いた数値の暗号化とを交互に繰り返すことで、２つめ以降の数値を暗号化する暗号化手段、
所定の文字コード体系に対応する前記変換テーブルを参照し、前記暗号化手段で得られた各暗号値を文字コードに変換する文字コード生成手段、
として機能させることを特徴とする文字コード暗号処理プログラム。
【請求項２】
前記暗号化手段は、前記レジスタの値を更新する際には、前記レジスタの値を所定の方向にシフトさせ、シフト処理によって空いた記憶領域に暗号値の少なくとも一部の値を格納することを特徴とする請求項１記載の文字コード暗号処理プログラム。
【請求項３】
前記暗号化手段は、前記レジスタへの初期値の設定および値の更新毎に、複数の数値を並列処理で暗号化することを特徴する請求項１記載の文字コード暗号処理プログラム。
【請求項４】
前記コンピュータを、さらに、
少なくとも１つの文字コードで構成される暗号文が入力されると、前記暗号文を構成する文字コードの文字コード体系に対応する前記変換テーブルを参照し、前記暗号文に含まれる文字コードを暗号値に変換する暗号文符号化手段、
前記暗号文符号化手段で得られた文字コード毎の暗号値を順次取得し、前記初期値が設定された前記レジスタの値を用いて、最初の暗号値を同一ビット数に復号し、以後、復号対象となった暗号値の少なくとも一部を用いた前記レジスタの値の更新と、更新された前記レジスタの値を用いた暗号値の復号とを交互に繰り返すことで、２つめ以降の暗号値を復号する復号手段、
所定の文字コード体系に対応する前記変換テーブルを参照し、前記復号手段で得られた各数値を文字コードに変換する文字コード再生手段、
として機能させることを特徴とする請求項１記載の文字コード暗号処理プログラム。
【請求項５】
コンピュータの演算処理によって文字コードを暗号化するための文字コード暗号処理方法において、
所定の文字コード体系の文字コードと所定のビット長の数値との間で相互に変換するための対応関係が登録された少なくとも１つの変換テーブルが変換テーブル記憶手段に予め記憶されており、少なくとも１つの文字コードで構成される平文が入力されると、前記平文を構成する文字コードの文字コード体系に対応する前記変換テーブルを参照し、前記平文に含まれる文字コードを数値に変換し、
符号化によって得られた文字コード毎の数値を順次取得し、初期値が設定されたレジスタの値を用いて、最初の数値を同一ビット数の暗号値に暗号化し、以後、暗号化によって得られた暗号値の少なくとも一部を用いた前記レジスタの値の更新と、更新された前記レジスタの値を用いた数値の暗号化とを交互に繰り返すことで、２つめ以降の数値を暗号化し、
所定の文字コード体系に対応する前記変換テーブルを参照し、暗号化によって得られた各暗号値を文字コードに変換する、
ことを特徴とする文字コード暗号処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は文字コードの暗号化を行うための文字コード暗号処理プログラム、および文字コード暗号処理方法に関し、特に文字コードに暗号化するための文字コード暗号処理プログラム、および文字コード暗号処理方法に関する。
【背景技術】
【０００２】
コンピュータで取り扱われる一部のデータは、情報漏洩等を防ぐために暗号化される。暗号化アルゴリズムとしては、ＡＥＳ（Advanced Encryption Standard）やＤＥＳ（Data Encryption Standard）など様々なアルゴリズムが考えられている（例えば、特許文献１参照）。
【０００３】
ところで、コンピュータで取り扱うデータには、文字コード列で記述されたデータがある。文字コードは、アルファベット、数字、漢字等の文字や記号に対して、１対１で割り当てられた固有の数字である。英数字のみであれば、１バイトの文字コードで表現することができる。漢字のように種類の多い文字は２バイトの文字コードで表現される。
【０００４】
このような文字コード列で記述されたデータを暗号化する場合、暗号化後も文字コードで表現できることが望まれる。その理由は以下の通りである。
例えば、ＳｉｆｔＪＩＳやＥＵＣ（Extended UNIX（登録商標） Code）では、１文字が２バイトの文字コードで表されるが、２バイト分（１６ビット）の全てのビットが文字コードとして使用されているわけではない。すなわち、２バイト中の１２〜１３ビットを用いれば、日本語で日常使用される文字を表現することができる。そのため、文字コードを取り扱うプログラムでは、２バイト中の文字コードを表すビットのみを読み出す場合もある。このとき、２バイトの文字コード全体がＡＥＳやＤＥＳで暗号化されていると、一部のデータを読み出しても正しく復号することができない。
【０００５】
すなわち、既存のシステムで使用される文字コードを暗号化した場合、システムの正常動作を保証するには、暗号化後も文字コードとして認識可能でなければならない。
そこで、文字コード列の暗号化後も文字コードとなるような暗号化技術が考えられている。そのような暗号化技術としては、例えば、文字コード変換テーブル（乱数表）を用いる技術がある。
【０００６】
文字コード変換テーブルを用いる技術では、平文の文字と暗号文の文字とをマッピングした（文字間の対応関係を定義した）文字コード変換テーブルを予め用意する。そして、暗号化対象の平文が入力されると、平文内の個々の文字が文字コード変換テーブルでマッピングされた他の文字に変換される。この暗号化技術では、文字コード列から文字コード列へ変換できる。
【０００７】
ただし、文字コード変換テーブルを用いた場合、変換前の文字コードと変換後の文字コードとが１対１の関系となる。そのため、同じ文字が連続した場合、変換後も同じ文字が連続する。その結果、他人に解読される危険性が高くなり、機密性の高いデータには利用できない。
【０００８】
そこで、通常の暗号化アルゴリズムによる暗号データを文字コード化する技術が考えられている。暗号データを文字コード化する技術では、ＡＥＳやＤＥＳによって暗号化されたバイナリデータを、ＢＡＳＥ６４等の技術を用いて文字コードに変換し直す。ここで、ＢＣＤは、１０進数の各桁を、４ビットの２進数で表現したものである。また、ＢＡＳＥ６４は、電子メールに添付されたバイナリデータの内容を、文字コードに置換する技術である。
【特許文献１】特開平８−２２７２６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかし、暗号データを文字コード化する場合、変換後の文字列が、元の文字列よりも長くなってしまう。
例えば、文字コード「0x20」、「0x21」という２バイトコードの２文字（合わせて４バイト）をＡＥＳで暗号化し、「0xF901」という４バイトのバイナリデータが得られたものとする。このバイナリデータを２進数で表すと「1111100100000001」となる。バイナリデータをＢＡＳＥ６４で文字コードに変換する場合、バイナリデータが６ビット毎に区切られる。そして、６ビット毎のデータが、それぞれ２バイトの文字コードとして取り扱われる。
【００１０】
具体的には、ビット数を６の倍数にするため、最後に２ビット分の「０」が付加され、「111110010000000100」となる。このデータの最初の６ビット「111110」が「0x3E」、次の６ビットが「010000」が「0x10」、最後の６ビット「000100」が「0x04」という文字コードとなる。結果的に６バイトの文字コードが生成される。
【００１１】
このように、暗号化によって文字コードの文字列が長くなると、その文字コードを処理するアプリケーションプログラムで正常に処理できない可能性がある。例えば、データベースにおける文字列の格納領域として、所定のデータ長分の領域が設けられている場合がある。その領域に格納すべき文字列を暗号化し文字列が長くなると、暗号化後のデータを所定の領域に格納することができないことがある。その結果、システムの正常動作が保証できなくなる。
【００１２】
本発明はこのような点に鑑みてなされたものであり、データ長を変えずに文字コードを暗号化できる文字コード暗号処理プログラム、および文字コード暗号処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明では上記課題を解決するために、図１に示すような文字コード暗号処理プログラムが提供される。本発明に係る文字コード暗号処理プログラムは、文字コードの暗号化を行うために、図１に示す暗号化装置１の有する機能をコンピュータに実行させることができる。
【００１４】
変換テーブル記憶手段１ａは、所定の文字コード体系の文字コードと所定のビット長の数値との間で相互に変換するための対応関係が登録された少なくとも１つの変換テーブルを記憶する。平文符号化手段１ｂは、少なくとも１つの文字コードで構成される平文３が入力されると、平文３を構成する文字コードの文字コード体系に対応する変換テーブルを参照し、平文３に含まれる文字コードを数値に変換する。暗号化手段１ｄは、平文符号化手段１ｂで得られた文字コード毎の数値を順次取得し、初期値が設定されたレジスタ１ｃの値を用いて、最初の数値を同一ビット数の暗号値に暗号化し、以後、暗号化によって得られた暗号値の少なくとも一部を用いたレジスタの値の更新と、更新されたレジスタの値を用いた数値の暗号化とを交互に繰り返すことで、２つめ以降の数値を暗号化する。文字コード生成手段１ｅは、所定の文字コード体系に対応する変換テーブルを参照し、暗号化手段１ｄで得られた各暗号値を文字コードに変換する。
【００１５】
このような文字コード暗号化プログラムを実行するコンピュータに平文３が入力されると、平文符号化手段１ｂにより、平文３を構成する文字コードの文字コード体系に対応する変換テーブルが参照され、平文３に含まれる文字コードが数値に変換される。次に、暗号化手段１ｄにより、平文符号化手段１ｂで得られた文字コード毎の数値が順次取得され、初期値が設定されたレジスタ１ｃの値を用いて、最初の数値が同一ビット数の暗号値に暗号化され、以後、暗号化によって得られた暗号値の少なくとも一部を用いたレジスタの値の更新と、更新されたレジスタの値を用いた数値の暗号化とが交互に繰り返され、入力された全ての数値が暗号化される。そして、文字コード生成手段１ｅにより、所定の文字コード体系に対応する変換テーブルが参照され、暗号化手段１ｄで得られた各暗号値が文字コードに変換される。
【００１６】
また、上記課題を解決するために、コンピュータの演算処理によって文字コードを暗号化するための文字コード暗号処理方法において、所定の文字コード体系の文字コードと所定のビット長の数値との間で相互に変換するための対応関係が登録された少なくとも１つの変換テーブルが変換テーブル記憶手段に予め記憶されており、少なくとも１つの文字コードで構成される平文が入力されると、前記平文を構成する文字コードの文字コード体系に対応する前記変換テーブルを参照し、前記平文に含まれる文字コードを数値に変換し、符号化によって得られた文字コード毎の数値を順次取得し、初期値が設定されたレジスタの値を用いて、最初の数値を同一ビット数の暗号値に暗号化し、以後、暗号化によって得られた暗号値の少なくとも一部を用いた前記レジスタの値の更新と、更新された前記レジスタの値を用いた数値の暗号化とを交互に繰り返すことで、２つめ以降の数値を暗号化し、所定の文字コード体系に対応する前記変換テーブルを参照し、暗号化によって得られた各暗号値を文字コードに変換する、ことを特徴とする文字コード暗号処理方法が提供される。
【００１７】
このような文字コード暗号処理方法によれば、平文を構成する文字コードの文字コード体系に対応する変換テーブルが参照され、平文３に含まれる文字コードが数値に変換される。次に、符号化で得られた文字コード毎の数値が順次取得され、初期値が設定されたレジスタの値を用いて、最初の数値が同一ビット数の暗号値に暗号化され、以後、暗号化によって得られた暗号値の少なくとも一部を用いたレジスタの値の更新と、更新されたレジスタの値を用いた数値の暗号化とが交互に繰り返されることで、２つめ以降の数値が暗号化される。そして、所定の文字コード体系に対応する変換テーブルが参照され、暗号化で得られた各暗号値が文字コードに変換される。
【発明の効果】
【００１８】
本発明では、文字コードを数値に符号化し、前回の暗号値を用いて順次数値を暗号化し、暗号値を文字コードに戻すようにした。そのため、１文字分の文字コードは暗号化後も１文字分の文字コードとなり、文字数を変えることなく暗号化できる。しかも、平文中で同じ文字が連続しても暗号化後は異なる文字に変更され、高い安全性が確保できる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、本実施の形態の概略を示す図である。図１に示すように、本実施の形態では、平文３を暗号化装置１で暗号化し、暗号文４を生成する。そして、その暗号文４を復号装置２で復号し、平文５を生成する。
【００２０】
暗号化装置１は、変換テーブル記憶手段１ａ、平文符号化手段１ｂ、レジスタ１ｃ、暗号化手段１ｄ、および文字コード生成手段１ｅを有している。
変換テーブル記憶手段１ａは、所定の文字コード体系の文字コードと所定のビット長の数値との間で相互に変換するための対応関係が登録された少なくとも１つの変換テーブルを記憶する。変換テーブルに登録可能な文字コードの数は、２のｎ乗（ｎは数値のビット長）となる。例えば、文字コードの種別数が２の１２乗内に収まる場合、１２ビットの数値に符号化される。
【００２１】
平文符号化手段１ｂは、少なくとも１つの文字コードで構成される平文３が入力されると、平文３を構成する文字コードの文字コード体系に対応する変換テーブルを参照し、平文３に含まれる文字コードを数値に変換する。例えば、図１の例では、「Ｆ」の文字コードが「３」の数値に変換されている。
【００２２】
暗号化手段１ｄは、平文符号化手段１ｂで得られた文字コード毎の数値を順次取得し、初期値が設定されたレジスタ１ｃの値を用いて、最初の数値を同一ビット数の暗号値に暗号化する。以後、暗号化手段１ｄは、暗号化によって得られた暗号値の少なくとも一部を用いたレジスタ１ｃの値の更新と、更新されたレジスタ１ｃの値を用いた数値の暗号化とを交互に繰り返すことで、２つめ以降の数値を暗号化する。
【００２３】
例えば、最初の数値が「３」であり、暗号化後に「５」となった場合、「５」の値を用いてレジスタ１ｃの値が更新される。そして、更新後のレジスタ１ｃの値を用いて、次の数値が暗号化される。
【００２４】
文字コード生成手段１ｅは、所定の文字コード体系に対応する変換テーブルを参照し、暗号化手段１ｄで得られた各暗号値を文字コードに変換する。平文３の文字コード体系と暗号文４の文字コード体系が同じであれば、共通の変換テーブルが参照される。図１の例では、共通の変換テーブルが参照され、暗号値「５」が「Ｅ」の文字コードに変換されている。変換処理で生成された文字コードによって暗号文４が構成される。
【００２５】
復号装置２は、変換テーブル記憶手段２ａ、暗号文符号化手段２ｂ、レジスタ２ｃ、復号手段２ｄ、および文字コード再生手段２ｅを有している。
変換テーブル記憶手段２ａは、所定の文字コード体系の文字コードと所定のビット長の数値との間で相互に変換するための対応関係が登録された少なくとも１つの変換テーブルを記憶する。
【００２６】
暗号文符号化手段２ｂは、少なくとも１つの文字コードで構成される暗号文が入力されると、暗号文４を構成する文字コードの文字コード体系に対応する変換テーブルを参照し、暗号文に含まれる文字コードを暗号値に変換する。
【００２７】
復号手段２ｄは、暗号文符号化手段２ｂで得られた文字コード毎の暗号値を順次取得し、初期値が設定されたレジスタ２ｃの値を用いて、最初の暗号値を同一ビット数に復号する。なお、レジスタ２ｃの初期値は、暗号化の際にレジスタ１ｃに設定された初期値と同じである。
【００２８】
以後、復号手段２ｄは、復号対象となった暗号値の少なくとも一部を用いたレジスタの値の更新と、更新されたレジスタの値を用いた暗号値の復号とを交互に繰り返すことで、２つめ以降の暗号値を復号する。
【００２９】
文字コード再生手段２ｅは、所定の文字コード体系に対応する変換テーブルを参照し、復号手段２ｄで得られた各数値を文字コードに変換する。変換よって生成された文字コードの列が平文５として出力される。
【００３０】
このような文字コード暗号化プログラムを実行するコンピュータに平文３が入力されると、平文符号化手段１ｂにより、平文３に含まれる文字コードが数値に変換される。次に、暗号化手段１ｄにより、平文符号化手段１ｂで得られた文字コード毎の数値が順次取得され、初期値が設定されたレジスタ１ｃの値を用いて、最初の数値が同一ビット数の暗号値に暗号化され、以後、暗号化によって得られた暗号値の少なくとも一部を用いたレジスタの値の更新と、更新されたレジスタの値を用いた数値の暗号化とが交互に繰り返され、入力された全ての数値が暗号化される。そして、文字コード生成手段１ｅにより、暗号化手段１ｄで得られた各暗号値が文字コードに変換され、暗号文４が生成される。
【００３１】
また、暗号文４が復号装置２に入力されると、暗号文符号化手段２ｂにより、暗号文４に含まれる文字コードが暗号値に変換される。次に、復号手段２ｄにより、暗号文符号化手段２ｂで得られた文字コード毎の暗号値が順次取得され、初期値が設定されたレジスタ２ｃの値を用いて、最初の暗号値が復号される。さらに、復号手段２ｄにより、復号対象となった暗号値の少なくとも一部を用いたレジスタの値の更新と、更新されたレジスタの値を用いた暗号値の復号とが交互に繰り返されることで、２つめ以降の暗号値が復号される。そして、文字コード再生手段２ｅにより、復号手段２ｄで得られた各数値が文字コードに変換され、平文５として出力される。
【００３２】
このようにして生成された平文５は、暗号化対象となった平文３と同じ内容を有している。すなわち、正しく復号される。しかも、暗号化の際には、１文字毎に暗号化が行われ、暗号化後も１文字の文字コードで表されるため、暗号化によって文字数が増大することがない。
【００３３】
さらに、暗号化の際にはレジスタが用いられ、レジスタの値が１文字暗号化する毎に更新されるため、同じ文字が連続していても、暗号化後にはそれぞれ異なる文字として出力される。その結果、単に文字コード変換テーブルを用いて、各文字の文字コードを別の文字コードに変換した場合に比べ、安全性が向上する。
【００３４】
このような文字コードの暗号化／復号の技術は、例えば、データベースに登録されるレコードの暗号化に利用できる。すなわち、データベースを構築したストレージデバイスに対する不正アクセスや、ストレージデバイスの盗難による情報の漏洩を防止するには、各データを暗号化して登録することが望まれる。その際、データベースには、文字列を登録するためのレコード格納領域に対し、格納できる文字数の制限が設けられていることがある。その場合、暗号化後においても、文字数が増加しないことが必要となる。
【００３５】
そこで、データベースに登録する文字列を暗号化する場合を例に採り、本発明の実施の形態を具体的に説明する。
［第１の実施の形態］
次に、第１の実施の形態の詳細を説明する。
【００３６】
図２は、第１の実施の形態のシステム構成例を示す図である。図２には、データベース１１０に格納する文字コードを暗号化する場合のシステム構成が示されている。
クライアント２１は、ネットワーク１０を介してサーバ１００に接続されている。サーバ１００には、データベース１１０が接続されている。
【００３７】
クライアント２１は、ユーザが使用するコンピュータである。サーバ１００は、データベース１１０の管理機能を有するコンピュータである。データベース１１０には、文字コード等の各種データが暗号化して格納されている。
【００３８】
この例では、サーバ１００がデータベース１１０に対して文字コードの入出力を行う際に、その文字コードの暗号化、復号処理を行うものとする。また、サーバ１００とクライアント２１との間の通信も、ＤＥＳ等の技術を用いて暗号化して行うことができる。
【００３９】
図３は、第１の実施の形態に用いるサーバのハードウェア構成例を示す図である。サーバ１００は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０８を介してＲＡＭ（Random Access Memory）１０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、通信インタフェース１０６、およびストレージデバイスインタフェース１０７が接続されている。
【００４０】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳやアプリケーションプログラムが格納される。
【００４１】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号を、バス１０８を介してＣＰＵ１０１に送信する。
【００４２】
通信インタフェース１０６は、ネットワーク１０に接続されている。通信インタフェース１０６は、ネットワーク１０を介して、他のコンピュータとの間でデータの送受信を行う。
【００４３】
ストレージデバイスインタフェース１０７は、データベース１１０に対してデータの入出力を行う通信インタフェースである。
以上のようなハードウェア構成によって、第１の実施の形態の処理機能を実現することができる。なお、図３には、サーバ１００のハードウェア構成を示したが、クライアント２１も同様のハードウェアで実現できる。
【００４４】
図４は、サーバの機能を示すブロック図である。サーバ１００は、データベース管理部１２０、初期値記憶部１３１、共通鍵記憶部１３２、変換テーブル１３３、暗号化部１４０、および復号部１５０を有している。
【００４５】
データベース管理部１２０は、クライアント２１からの要求に応じてデータベース１１０内のデータの入出力を行う。なお、データベース１１０に対して文字コードのデータを入力する際には、データベース管理部１２０は、暗号化部１４０を介してデータベース１１０へ文字コードを書き込む。また、データベース１１０から文字コードを出力する際には、データベース管理部１２０は、復号部１５０を介してデータベース１１０内の文字コードを取得する。
【００４６】
初期値記憶部１３１は、暗号化部１４０および復号部１５０における暗号化または復号処理で用いるシフトレジスタの初期値（initial vector）を記憶する記憶領域である。共通鍵記憶部１３２は、暗号化部１４０および復号部１５０における暗号化または復号処理で用いる共通の鍵データを記憶する記憶領域である。
【００４７】
変換テーブル１３３は、文字コードを所定のビット長のデータに符号化、またはその逆の変換を行うためのデータ変換テーブルである。変換テーブル１３３には、文字コードと数値との対応関係が設定されている。
【００４８】
暗号化部１４０は、データベース管理部１２０から受け取った文字コードを暗号化し、データベース１１０に格納する。暗号化に際しては、初期値記憶部１３１、共通鍵記憶部１３２、および変換テーブル１３３が参照される。
【００４９】
復号部１５０は、データベース管理部１２０からの要求に応じてデータベース１１０から暗号化された文字コードを取得し、その文字コードを復号する。そして、復号部１５０は、復号した文字コードをデータベース管理部１２０に渡す。復号に際しては、初期値記憶部１３１、共通鍵記憶部１３２、および変換テーブル１３３が参照される。
【００５０】
図５は、変換テーブルのデータ構造例を示す図である。変換テーブル１３３には、文字コードと数値との対応関係が示されている。具体的は、文字コードの格納領域に対して、その文字コードに対する数値がインデックスで示されている。
【００５１】
なお、図５の例では、説明を分かりやすくするために、Ａ〜Ｈの範囲内の文字のみが処理対象となるものとしている。この場合、８種類（２の３乗）の数値が定義できればよい。従って、数値は、３ビットで示すことができる。
【００５２】
変換テーブル１３３への文字コードの格納順は、アルファベットの順番通りでもよいし、ランダムでもよい。図５の例では、数値「０」にＧの文字コード「０ｘ４７］、数値「１」にＢの文字コード「０ｘ４２」、数値「２」にＡの文字コード「０ｘ４１」、数値「３」にＦの文字コード「０ｘ４６」、数値「４」にＣの文字コード「０ｘ４３」、数値「５」にＥの文字コード「０ｘ４５」、数値「６」にＨの文字コード「０ｘ４８」、数値「７」にＤの文字コード「０ｘ４４」がそれぞれ格納されている。なお、図５に示す文字コードは、ＡＳＣＩＩ文字コード表に従っている。
【００５３】
次に、暗号化部１４０の処理機能について詳細に説明する。なお、第１の実施の形態では、暗号化アルゴリズムとして、ＡＥＳのＣＦＢ（Cipher Feedback Mode）モードを用いるものとする。
【００５４】
図６は、暗号化部の機能を示すブロック図である。暗号化部１４０は、文字コード符号化部１４１、シフトレジスタ１４２、暗号化処理部１４３、暗号データ記憶部１４４、排他的論理和（ＸＯＲ）演算部１４５、および文字コード生成部１４６を有している。
【００５５】
文字コード符号化部１４１は、データベース管理部１２０から平文３１が入力されると、変換テーブル１３３を参照して、平文３１を構成する各文字コードを３ビットの数値に符号化する。文字コード符号化部１４１は、文字コードから生成される数値を、排他的論理和演算部１４５に入力する。
【００５６】
シフトレジスタ１４２は、排他的論理和演算部１４５から演算結果が出力される毎に、所定のビット数分のデータをシフトすることができるレジスタである。この例では、シフトレジスタ１４２内のデータが左に３ビットシフトし、排他的論理和演算部１４５の演算結果が右側の３ビットに格納される。暗号化処理を開始する際には、初期値記憶部１３１に格納されている初期値がシフトレジスタ１４２に設定される。
【００５７】
暗号化処理部１４３は、シフトレジスタ１４２に設定された値を、共通鍵記憶部１３２に格納されている鍵データを用いて暗号化する。そして、暗号化処理部１４３は、暗号化されたデータを暗号データ記憶部１４４に格納する。
【００５８】
排他的論理和演算部１４５は、文字コード符号化部１４１から出力された３ビットの数値と、暗号データ記憶部１４４の先頭（左側）から３ビットのデータとの排他的論理和を演算する。排他的論理和演算部１４５は、演算結果をシフトレジスタ１４２と文字コード生成部１４６とに渡す。
【００５９】
文字コード生成部１４６は、変換テーブル１３３を参照し、排他的論理和演算部１４５の演算結果を文字コードに変換する。そして、文字コード生成部１４６は、変換後の文字コードを暗号文３２としてデータベース１１０に格納する。
【００６０】
このような構成の暗号化部１４０において、平文３１が入力されると、まず、文字コード符号化部１４１によって、その平文３１が数値列に符号化される。
図７は、暗号化部内の文字コード符号化部の処理を示す図である。図７には、「ＦＡＣＥ」という文字列が平文３１として入力された場合の例が示されている。文字コード符号化部１４１は、変換テーブル１３３を参照し、平文３１の先頭の文字から順に符号化する。この例では、「Ｆ」の文字が「３」に変換され、「Ａ」の文字が「２」に変換され、「Ｃ」の文字が「４」に変換され、「Ｅ」の文字が「５」に変換されている。
【００６１】
変換された符号化データ３３は、順次、排他的論理和演算部１４５に入力される。すると、排他的論理和演算部１４５と暗号化処理部１４３とが連携して動作し、符号化データ３３の暗号化処理が行われる。
【００６２】
図８は、暗号化処理における各データの遷移状況を示す図である。この例では、符号化データ３３を構成する３ビットずつの数値が「３」、「２」、「４」、「５」の順で入力されたときの各数値の暗号化状況が示されている。
【００６３】
第１の状態［ＳＴ１］には、符号化データ３３の１つめの数値の暗号化状況が示されている。このとき、シフトレジスタ１４２には初期値が設定されている。そして、暗号化処理が開始されると、まず、暗号化処理部１４３によってシフトレジスタ１４２内の値が暗号化され、暗号データ記憶部１４４に格納される。このとき暗号化されたデータの先頭の３ビットの値は「６」であるものとする。
【００６４】
次に、排他的論理和演算部１４５によって、暗号データ記憶部１４４内の先頭の３ビットと符号化データ３３の先頭の３ビットとの排他的論理和が計算される。図８の例では、「６」と「３」との排他的論理和が演算され、演算結果３４ａとして「５」が得られる。
【００６５】
第２の状態［ＳＴ２］には、符号化データ３３の２つめの数値の暗号化状況が示されている。このとき、シフトレジスタ１４２は左に３ビットシフトされ、右の３ビットに前回の演算結果３４ａが格納されている。この状態で、暗号化処理部１４３によってシフトレジスタ１４２内の値が暗号化され、暗号データ記憶部１４４に格納される。このとき暗号化されたデータの先頭の３ビットの値は「１」であるものとする。
【００６６】
次に、排他的論理和演算部１４５によって、暗号データ記憶部１４４内の先頭の３ビットと符号化データ３３の先頭の３ビットとの排他的論理和が計算される。図８の例では、「１」と「２」との排他的論理和が演算され、演算結果３４ｂとして「３」が得られる。
【００６７】
以後同様に、符号化データ３３を構成する数値の暗号化が行われる。
第３の状態［ＳＴ３］には、符号化データ３３の３つめの数値の暗号化状況が示されている。この例では、「５」と「４」との排他的論理和の演算結果３４ｃとして「１」が得られている。
【００６８】
第４の状態［ＳＴ４］には、符号化データ３３の４つめの数値の暗号化状況が示されている。この例では、「５」と「５」との排他的論理和の演算結果３４ｄとして「０」が得られている。
【００６９】
以上の処理によって得られた演算結果３４ａ〜３４ｄの列が、暗号データ３４となる。暗号データ３４は、文字コード生成部１４６に入力される。そして、文字コード生成部１４６によって、暗号文３２に変換される。
【００７０】
図９は、暗号化部内の文字コード生成部の処理を示す図である。図９では、「５」、「３」、「１」、「０」の暗号データ３４が文字コード生成部１４６に入力されている。文字コード生成部１４６は、変換テーブル１３３を参照し、暗号データ３４の先頭の数値から順に文字コードに変換する。この例では、「５」の数値が「Ｅ」に変換され、「３」の数値が「Ｆ」に変換され、「１」の数値が「Ｂ」に変換され、「０」の数値が「Ｇ」に変換されている。このようにして得られた暗号文３２がデータベース１１０に格納される。
【００７１】
次に、データベース１１０に格納された暗号文３２を復号する場合の復号処理について詳細に説明する。
図１０は、復号部の機能を示すブロック図である。復号部１５０は、文字コード符号化部１５１、シフトレジスタ１５２、暗号化処理部１５３、暗号データ記憶部１５４、排他的論理和演算部１５５、および文字コード生成部１５６を有している。
【００７２】
文字コード符号化部１５１は、データベース１１０から暗号文３２を取得すると、変換テーブル１３３を参照して、暗号文３２を構成する各文字コードを３ビットの数値に符号化する。文字コード符号化部１５１は、文字コードから生成される数値を、シフトレジスタ１５２と排他的論理和演算部１５５とに入力する。
【００７３】
シフトレジスタ１５２は、排他的論理和演算部１５５から演算結果が出力される毎に、所定のビット数分のデータをシフトすることができるレジスタである。この例では、シフトレジスタ１５２内のデータが左に３ビットシフトし、文字コード符号化部１５１から出力された数値が右側の３ビットに格納される。復号処理を開始する際には、初期値記憶部１３１に格納されている初期値がシフトレジスタ１５２に設定される。
【００７４】
暗号化処理部１５３は、シフトレジスタ１５２に設定された値を、共通鍵記憶部１３２に格納されている鍵データを用いて暗号化する。そして、暗号化処理部１５３は、暗号化されたデータを暗号データ記憶部１５４に格納する。
【００７５】
排他的論理和演算部１５５は、文字コード符号化部１５１から出力された３ビットの数値と、暗号データ記憶部１５４の先頭（左側）から３ビットのデータとの排他的論理和を演算する。排他的論理和演算部１５５は、演算結果を文字コード生成部１５６に渡す。
【００７６】
文字コード生成部１５６は、変換テーブル１３３を参照し、排他的論理和演算部１５５の演算結果を文字コードに変換する。そして、文字コード生成部１５６は、変換後の文字コードで構成される平文３５をデータベース管理部１２０に渡す。
【００７７】
このような構成の復号部１５０において、暗号文３２が入力されると、まず、文字コード符号化部１５１によって、その暗号文３２が数値列に符号化される。
図１１は、復号部内の文字コード符号化部の処理を示す図である。図１１には、「ＥＦＢＧ」という文字列が暗号文３２として入力された場合の例が示されている。文字コード符号化部１５１は、変換テーブル１３３を参照し、暗号文３２の先頭の文字から順に符号化する。この例では、「Ｅ」の文字が「５」に変換され、「Ｆ」の文字が「３」に変換され、「Ｂ」の文字が「１」に変換され、「Ｇ」の文字が「０」に変換されている。
【００７８】
変換された符号化データ３６は、暗号文３２を生成した際の暗号データ３４と同じ内容である。符号化データ３６は、順次、排他的論理和演算部１５５に入力される。すると、排他的論理和演算部１５５と暗号化処理部１５３とが連携して動作し、符号化データ３６の復号処理が行われる。
【００７９】
図１２は、復号処理における各データの遷移状況を示す図である。この例では、符号化データ３６を構成する３ビットずつの数値が「５」、「３」、「１」、「０」の順で入力されたときの各数値の暗号化状況が示されている。
【００８０】
第１の状態［ＳＴ１１］には、符号化データ３６の１つめの数値の復号状況が示されている。このとき、シフトレジスタ１５２には初期値が設定されている。そして、暗号化処理が開始されると、まず、暗号化処理部１５３によってシフトレジスタ１５２内の値が暗号化され、暗号データ記憶部１５４に格納される。このとき暗号データ記憶部１５４に格納されたデータは、暗号化時の第１の状態において暗号データ記憶部１４４に格納されたデータ（図８の［ＳＴ１］参照）と同じ値である。従って、暗号化されたデータの先頭の３ビットの値は「６」である。
【００８１】
次に、排他的論理和演算部１５５によって、暗号データ記憶部１５４内の先頭の３ビットと符号化データ３６の先頭の３ビットとの排他的論理和が計算される。図１２の例では、「６」と「５」との排他的論理和が演算され、演算結果３７ａとして「３」が得られる。この演算結果３７ａは、暗号化時の第１の状態において排他的論理和演算部１４５が演算対象とした符号化データ３３を構成する数値（図８の［ＳＴ１］参照）と同じ値となる。すなわち、元の値に復号されている。
【００８２】
第２の状態［ＳＴ１２］には、符号化データ３６の２つめの数値の復号状況が示されている。このとき、シフトレジスタ１５２は左に３ビットシフトされ、右の３ビットに前回の排他的論理和演算において演算対象とされた数値が格納されている。この状態で、暗号化処理部１５３によってシフトレジスタ１５２内の値が暗号化され、暗号データ記憶部１５４に格納される。このとき暗号化されたデータの先頭の３ビットの値は「１」となる。
【００８３】
次に、排他的論理和演算部１５５によって、暗号データ記憶部１５４内の先頭の３ビットと符号化データ３６の先頭の３ビットとの排他的論理和が計算される。図８の例では、「１」と「３」との排他的論理和が演算され、演算結果３７ｂとして「２」が得られる。
【００８４】
以後同様に、符号化データ３６を構成する数値の暗号化が行われる。
第３の状態［ＳＴ１３］には、符号化データ３６の３つめの数値の復号状況が示されている。この例では、「５」と「１」との排他的論理和の演算結果３７ｃとして「４」が得られている。
【００８５】
第４の状態［ＳＴ１４］には、符号化データ３６の４つめの数値の復号状況が示されている。この例では、「５」と「０」との排他的論理和の演算結果３７ｄとして「５」が得られている。
【００８６】
以上の処理によって得られた演算結果３７ａ〜３７ｄの列が、復号済データ３７となる。この復号済データ３７は、暗号化の際の符号化データ３３（図７参照）と同じ内容である。復号済データ３７は、文字コード生成部１５６に入力される。そして、文字コード生成部１５６によって、平文３５に変換される。
【００８７】
図１３は、復号部内の文字コード生成部の処理を示す図である。図１３では、「３」、「２」、「４」、「５」の復号済データ３７が文字コード生成部１５６に入力されている。文字コード生成部１５６は、変換テーブル１３３を参照し、復号済データ３７の先頭の数値から順に文字コードに変換する。この例では、「３」の数値が「Ｆ」に変換され、「２」の数値が「Ａ」に変換され、「４」の数値が「Ｃ」に変換され、「５」の数値が「Ｅ」に変換されている。このようにして得られた平文３５がデータベース管理部１２０に渡される。
【００８８】
平文３５は、「ＦＡＣＥ］という文字列になっており、暗号化時に入力された平文３１と同じ内容である。すなわち、正しく復号されていることが分かる。しかも、データベース１１０に格納された時点では、「ＥＦＢＧ」という文字列を示す文字コードで格納されている。この文字コードのデータ長は、入力された平文３１のデータ長と同じである。すなわち、データ長を変えずに文字コードのデータ形式で暗号化され、暗号化された文字コードが復号されている。
【００８９】
［第２の実施の形態］
次に第２の実施の形態について説明する。第２の実施の形態は、複数の文字コードの暗号化を並列処理するものである。なお、第２の実施の形態では、文字コードを１３ビットの数値（２の１３乗＝８１９２種のキャラクタ空間）に符号化するものとする。
【００９０】
図１４は、並列処理を行う暗号化部の構成を示す図である。変換テーブル１３３ａは、２バイトの文字コードと１３ビットの数値との対応関係が登録されている。
暗号化部１４０ａは、文字コード符号化部１４１ａ、シフトレジスタ１４２ａ、暗号化処理部１４３ａ、暗号データ記憶部１４４ａ、９つの排他的論理和演算部１４５ａ，１４５ｂ，１４５ｃ，・・・，１４５ｉ、および文字コード生成部１４６ａを有している。
【００９１】
文字コード符号化部１４１ａは、平文が入力されると、その平文の先頭から９文字分の文字コードを取得し、各文字コードを変換テーブル１３３ａに基づいて１３ビットの数値に符号化する。文字コード符号化部１４１ａは、その後も同様に９文字ずつ符号化する。符号化された９文字分の数値は、それぞれ個別の排他的論理和演算部１４５ａ，１４５ｂ，１４５ｃ，・・・，１４５ｉに入力される。
【００９２】
シフトレジスタ１４２ａは、１６バイト分のデータを格納できる。暗号化処理の開始時には、初期値記憶部１３１ａに予め格納されている１６バイトの初期値が、シフトレジスタ１４２ａに格納される。その後、９文字分の暗号化が行われる毎に、シフトレジスタ１４２ａ内の値が、左に１３ビットシフトされる。そのとき、右端の１３ビットには、排他的論理和演算部１４５ａの演算結果が設定される。
【００９３】
暗号化処理部１４３ａは、共通鍵記憶部１３２ａに格納されている鍵データを用いて、シフトレジスタ１４２ａ内の値を暗号化する。この例では、シフトレジスタ１４２ａ内に１６バイトのデータが格納されているため、１６バイトの暗号データが生成される。暗号化処理部１４３ａで生成された暗号データは、暗号データ記憶部１４４ａに格納される。
【００９４】
暗号データ記憶部１４４ａは、暗号化処理部１４３ａで暗号化された１６バイトのデータを記憶する。暗号データ記憶部１４４ａに格納されたデータは、先頭から１３ビットずつに分けられ、細分化されたそれぞれのデータが排他的論理和演算部１４５ａ，１４５ｂ，１４５ｃ，・・・，１４５ｉに入力される。
【００９５】
排他的論理和演算部１４５ａ，１４５ｂ，１４５ｃ，・・・，１４５ｉは、暗号データ記憶部１４４ａから入力された１３ビットのデータと、文字コード符号化部１４１ａから入力された１３ビットのデータとの排他的論理和を演算する。そして、排他的論理和演算部１４５ａ，１４５ｂ，１４５ｃ，・・・，１４５ｉは、演算結果を文字コード生成部１４６ａに渡す。
【００９６】
文字コード生成部１４６ａは、変換テーブル１３３ａを参照し、排他的論理和演算部１４５ａ，１４５ｂ，１４５ｃ，・・・，１４５ｉから入力された各演算結果を、文字コードに変換する。
【００９７】
このような構成の暗号化部１４０ａによれば、平文が入力されると、９文字ずつ並列処理で暗号化される。なお、並列処理数を９としたのは、暗号データ記憶部１４４ａに格納されるデータが１６バイト（１２８ビット）であり、そのデータから取り出すことのできる１３ビットずつのデータの最大数が９個だからである。
【００９８】
図１５は、並列処理を行う復号部の構成を示す図である。
復号部１５０は、文字コード符号化部１５１ａ、シフトレジスタ１５２ａ、暗号化処理部１５３ａ、暗号データ記憶部１５４ａ、９つの排他的論理和演算部１５５ａ，１５５ｂ，１５５ｃ，・・・，１５５ｉ、および文字コード生成部１５６ａを有している。
【００９９】
文字コード符号化部１５１ａは、暗号文が入力されると、その暗号文の先頭から９文字分の文字コードを取得し、各文字コードを変換テーブル１３３ａに基づいて１３ビットの数値に符号化する。文字コード符号化部１５１ａは、その後も同様に９文字ずつ符号化する。符号化された９文字分の数値は、それぞれ個別の排他的論理和演算部１５５ａ，１５５ｂ，１５５ｃ，・・・，１５５ｉに入力される。
【０１００】
シフトレジスタ１５２ａは、１６バイト分のデータを格納できる。暗号化処理の開始時には、初期値記憶部１３１ａに予め格納されている１６バイトの初期値が、シフトレジスタ１５２ａに格納される。その後、９文字分の暗号化が行われる毎に、シフトレジスタ１５２ａ内の値が、左に１３ビットシフトされる。そのとき、右端の１３ビットには、文字コード符号化部１５１ａが符号化した最初の１３ビットの数値が設定される。
【０１０１】
暗号化処理部１５３ａは、共通鍵記憶部１３２ａに格納されている鍵データを用いて、シフトレジスタ１５２ａ内の値を暗号化する。この例では、シフトレジスタ１５２ａ内に１６バイトのデータが格納されているため、１６バイトの暗号データが生成される。暗号化処理部１５３ａで生成された暗号データは、暗号データ記憶部１５４ａに格納される。
【０１０２】
暗号データ記憶部１５４ａは、暗号化処理部１５３ａで暗号化された１６バイトのデータを記憶する。暗号データ記憶部１５４ａに格納されたデータは、先頭から１３ビットずつに分けられ、細分化されたそれぞれのデータが排他的論理和演算部１５５ａ，１５５ｂ，１５５ｃ，・・・，１５５ｉに入力される。
【０１０３】
排他的論理和演算部１５５ａ，１５５ｂ，１５５ｃ，・・・，１５５ｉは、暗号データ記憶部１５４ａから入力された１３ビットのデータと、文字コード符号化部１５１ａから入力された１３ビットのデータとの排他的論理和を演算する。そして、排他的論理和演算部１５５ａ，１５５ｂ，１５５ｃ，・・・，１５５ｉは、演算結果を文字コード生成部１５６ａに渡す。
【０１０４】
文字コード生成部１５６ａは、変換テーブル１３３ａを参照し、排他的論理和演算部１５５ａ，１５５ｂ，１５５ｃ，・・・，１５５ｉから入力された各演算結果を、文字コードに変換する。
【０１０５】
このような構成の復号部１５０ａによれば、暗号文が入力されると、９文字ずつ並列処理で復号される。並列処理を行うことにより、処理の高速化が図れる。
［応用例］
変換テーブル１３３，１３３ａにおいて、任意の文字コードに除外コードを設定することもできる。除外コードは、対応する文字コードを暗号化の対象外とすることを指定するフラグである。除外コードが設定された文字コードに関しては、文字コード符号化部１４１，１５１，１４１ａ，１５１ａで符号化されず、そのまま文字コード生成部１４６，１５６，１４６ａ，１５６ａに渡される。
【０１０６】
文字コード生成部１４６，１５６，１４６ａ，１５６ａでは、除外コードに対応する文字コードを、そのまま暗号文（復号時には平文）に含める。その際、暗号化または復号前の文字列を構成したときの文字コードの配列に従って、暗号化または復号された文字コードの配列内に符号化の対象から除外された文字コードを挿入する。
【０１０７】
このように除外コードを設けることにより、エスケープシーケンスに用いる終端文字等を、暗号化せずにそのまま暗号文に含めることができる。
また、除外コードが設定された文字コードについては、暗号化または復号の結果出力からも除外することができる。その場合、文字コード符号化部１４１，１５１，１４１ａ，１５１ａは、除外コードが設定された文字コードが入力されると、その文字コードを破棄する。これにより、例えば、終端文字等が不要な場合、その文字コードを処理結果から除外することができる。
【０１０８】
また、文字コード符号化部１４１，１５１，１４１ａ，１５１ａと文字コード生成部１４６，１５６，１４６ａ，１５６ａとで、異なる変換テーブルを参照することもできる。例えば、ＥＵＣコードの文字をＵＮＩＣＯＤＥの文字に暗号化（または復号）する場合、文字コード符号化部１４１，１５１，１４１ａ，１５１ａは、ＥＵＣコードに対応する変換テーブルを参照し、文字コード生成部１４６，１５６，１４６ａ，１５６ａは、ＵＮＩＣＯＤＥに対応する変換テーブルを参照する。
【０１０９】
なお、複数の変換テーブルを用いる場合、同一の文字（文字コードは文字コード体系毎に異なる）を符号化する際の数値は、全ての変換テーブルで共通であることが必要である。例えば、「Ａ」の文字コードを符号化する場合、文字コード体系に拘わらず特定の数値に符号化される。
【０１１０】
また、上記の第１，第２の実施の形態では、暗号化および復号をサーバ１００で行っているが、それらをクライアント２１で行うこともできる。その場合、初期値記憶部、共通鍵記憶部、変換テーブル、暗号化部、および復号部がクライアント２１内に設けられる。
【０１１１】
さらに、平文の暗号化と暗号文の復号とを、個別のコンピュータで行うこともできる。その場合、平文を暗号化するコンピュータには、初期値記憶部、共通鍵記憶部、変換テーブル、および暗号化部が設けられる。一方、暗号文を復号するコンピュータには、初期値記憶部、共通鍵記憶部、変換テーブル、および復号部が設けられる。このとき、それぞれのコンピュータの初期値記憶部と共通鍵記憶部との内容は共通でなければならない。また、平文を暗号化するコンピュータの文字コード生成部が参照する変換テーブルと、暗号文を復号するコンピュータの文字コード符号化部が参照する変換テーブルとの内容も共通でなければならない。
【０１１２】
また、暗号化方式として共通鍵方式を用いるのではなく、公開鍵方式を採用することもできる。その場合、暗号化の際の鍵データと復号の際の鍵データとは異なる値となる。
また、上記の例では、シフトレジスタを用いた暗号化のモードとしてＣＦＢモードを用いているが、ブロック暗号化モードとしては、前回の暗号化によって生成された暗号値が次回の暗号化で使用されるような連鎖関系があればよい。このような連鎖関系があれば、同じ文字が連続していても、暗号化後には異なる文字として出力される。連鎖関系があるブロック暗号化モードとしては、ＯＦＢ（Oftput Feed Back）モードやＣＢＣ（Cipher Block Chaining）モードがある。
【０１１３】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、サーバが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１１４】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１１５】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１１６】
なお、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
以上説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
【０１１７】
（付記１）  文字コードを暗号化するための文字コード暗号処理プログラムにおいて、
コンピュータを、
所定の文字コード体系の文字コードと所定のビット長の数値との間で相互に変換するための対応関係が登録された少なくとも１つの変換テーブルを記憶する変換テーブル記憶手段、
少なくとも１つの文字コードで構成される平文が入力されると、前記平文を構成する文字コードの文字コード体系に対応する前記変換テーブルを参照し、前記平文に含まれる文字コードを数値に変換する平文符号化手段、
前記平文符号化手段で得られた文字コード毎の数値を順次取得し、初期値が設定されたレジスタの値を用いて、最初の数値を同一ビット数の暗号値に暗号化し、以後、暗号化によって得られた暗号値の少なくとも一部を用いた前記レジスタの値の更新と、更新された前記レジスタの値を用いた数値の暗号化とを交互に繰り返すことで、２つめ以降の数値を暗号化する暗号化手段、
所定の文字コード体系に対応する前記変換テーブルを参照し、前記暗号化手段で得られた各暗号値を文字コードに変換する文字コード生成手段、
として機能させることを特徴とする文字コード暗号処理プログラム。
【０１１８】
（付記２）  前記暗号化手段は、前記レジスタの値を更新する際には、前記レジスタの値を所定の方向にシフトさせ、シフト処理によって空いた記憶領域に暗号値の少なくとも一部の値を格納することを特徴とする付記１記載の文字コード暗号処理プログラム。
【０１１９】
（付記３）  前記変換テーブル記憶手段は、任意の文字コードを暗号化の対象から除外することを示す除外コードを記憶しており、
前記平文符号化手段は、前記除外コードによって指定された文字コードについては、符号化の対象から除外し、
前記文字コード生成手段は、前記平文を構成したときの文字コードの配列に従って、暗号値からの変換によって得られた文字コードの配列内に前記平文符号化手段で符号化の対象から除外された文字コードを挿入することを特徴とする付記１記載の文字コード暗号処理プログラム。
【０１２０】
（付記４）  前記変換テーブル記憶手段は、任意の文字コードを暗号化の対象から除外することを示す除外コードを記憶しており、
前記平文符号化手段は、前記除外コードによって指定された文字コードを破棄することを特徴とする付記１記載の文字コード暗号処理プログラム。
【０１２１】
（付記５）  前記暗号化手段は、前記レジスタへの初期値の設定および値の更新毎に、複数の数値を並列処理で暗号化することを特徴する付記１記載の文字コード暗号処理プログラム。
【０１２２】
（付記６）  前記コンピュータを、さらに、
少なくとも１つの文字コードで構成される暗号文が入力されると、前記暗号文を構成する文字コードの文字コード体系に対応する前記変換テーブルを参照し、前記暗号文に含まれる文字コードを暗号値に変換する暗号文符号化手段、
前記暗号文符号化手段で得られた文字コード毎の暗号値を順次取得し、前記初期値が設定された前記レジスタの値を用いて、最初の暗号値を同一ビット数に復号し、以後、復号対象となった暗号値の少なくとも一部を用いた前記レジスタの値の更新と、更新された前記レジスタの値を用いた暗号値の復号とを交互に繰り返すことで、２つめ以降の暗号値を復号する復号手段、
所定の文字コード体系に対応する前記変換テーブルを参照し、前記復号手段で得られた各数値を文字コードに変換する文字コード再生手段、
として機能させることを特徴とする付記１記載の文字コード暗号処理プログラム。
【０１２３】
（付記７）  コンピュータの演算処理によって文字コードを暗号化するための文字コード暗号処理方法において、
所定の文字コード体系の文字コードと所定のビット長の数値との間で相互に変換するための対応関係が登録された少なくとも１つの変換テーブルが変換テーブル記憶手段に予め記憶されており、少なくとも１つの文字コードで構成される平文が入力されると、前記平文を構成する文字コードの文字コード体系に対応する前記変換テーブルを参照し、前記平文に含まれる文字コードを数値に変換し、
符号化によって得られた文字コード毎の数値を順次取得し、初期値が設定されたレジスタの値を用いて、最初の数値を同一ビット数の暗号値に暗号化し、以後、暗号化によって得られた暗号値の少なくとも一部を用いた前記レジスタの値の更新と、更新された前記レジスタの値を用いた数値の暗号化とを交互に繰り返すことで、２つめ以降の数値を暗号化し、
所定の文字コード体系に対応する前記変換テーブルを参照し、暗号化によって得られた各暗号値を文字コードに変換する、
ことを特徴とする文字コード暗号処理方法。
【０１２４】
（付記８）  文字コードを暗号化するための文字コード暗号処理装置において、
所定の文字コード体系の文字コードと所定のビット長の数値との間で相互に変換するための対応関係が登録された少なくとも１つの変換テーブルを記憶する変換テーブル記憶手段と、
少なくとも１つの文字コードで構成される平文が入力されると、前記平文を構成する文字コードの文字コード体系に対応する前記変換テーブルを参照し、前記平文に含まれる文字コードを数値に変換する平文符号化手段と、
前記平文符号化手段で得られた文字コード毎の数値を順次取得し、初期値が設定されたレジスタの値を用いて、最初の数値を同一ビット数の暗号値に暗号化し、以後、暗号化によって得られた暗号値の少なくとも一部を用いた前記レジスタの値の更新と、更新された前記レジスタの値を用いた数値の暗号化とを交互に繰り返すことで、２つめ以降の数値を暗号化する暗号化手段と、
所定の文字コード体系に対応する前記変換テーブルを参照し、前記暗号化手段で得られた各暗号値を文字コードに変換する文字コード生成手段と、
を有することを特徴とする文字コード暗号処理装置。
【図面の簡単な説明】
【０１２５】
【図１】本実施の形態の概略を示す図である。
【図２】第１の実施の形態のシステム構成例を示す図である。
【図３】第１の実施の形態に用いるサーバのハードウェア構成例を示す図である。
【図４】サーバの機能を示すブロック図である。
【図５】変換テーブルのデータ構造例を示す図である。
【図６】暗号化部の機能を示すブロック図である。
【図７】暗号化部内の文字コード符号化部の処理を示す図である。
【図８】暗号化処理における各データの遷移状況を示す図である。
【図９】暗号化部内の文字コード生成部の処理を示す図である。
【図１０】復号部の機能を示すブロック図である。
【図１１】復号部内の文字コード符号化部の処理を示す図である。
【図１２】復号処理における各データの遷移状況を示す図である。
【図１３】復号部内の文字コード生成部の処理を示す図である。
【図１４】並列処理を行う暗号化部の構成を示す図である。
【図１５】並列処理を行う復号部の構成を示す図である。
【符号の説明】
【０１２６】
１  暗号化装置
１ａ、２ａ  変換テーブル記憶手段
１ｂ  平文符号化手段
１ｃ、２ｃ  レジスタ
１ｄ  暗号化手段
１ｅ  文字コード生成手段
２  復号装置
２ｂ  暗号文符号化手段
２ｄ  復号手段
２ｅ  文字コード再生手段
３、５  平文
４  暗号文
【図１】
2007065253.tif 000003
【図２】
2007065253.tif 000004
【図３】
2007065253.tif 000005
【図４】
2007065253.tif 000006
【図５】
2007065253.tif 000007
【図６】
2007065253.tif 000008
【図７】
2007065253.tif 000009
【図８】
2007065253.tif 000010
【図９】
2007065253.tif 000011
【図１０】
2007065253.tif 000012
【図１１】
2007065253.tif 000013
【図１２】
2007065253.tif 000014
【図１３】
2007065253.tif 000015
【図１４】
2007065253.tif 000016
【図１５】
2007065253.tif 000017