"コンピュータに、第1種類の符号情報群に含まれる第1種類の符号情報のそれぞれについて、入力された入力情報に応じて第2種類の符号情報群に含まれる第2種類の符号情報の何れかと関連付けて記憶部に記憶し、変換対象データ内にある第1種類の符号情報が含まれる場合に、前記ある第1種類の符号情報を、前記ある第1種類の符号情報と関連付けて前記記憶部に記憶された第2種類の符号情報に変換する、処理を実行させることを特徴とする変換プログラム。前記第1種類の符号情報群に含まれる第1種類の符号情報よりも、前記第2種類の符号情報群に含まれる符号情報の方が、データサイズが大きいか小さいかの何れかである、ことを特徴とする請求項1に記載の変換プログラム。前記第1種類の符号情報群に含まれる第1種類の符号情報のそれぞれは、文字を示す情報であり、前記第2種類の符号情報群に含まれる第2種類の符号情報のそれぞれは、圧縮符号を示す情報である、ことを特徴とする請求項2に記載の変換プログラム。前記第1種類の符号情報群に含まれる第1種類の符号情報のそれぞれは、圧縮符号を示す情報であり、前記第2種類の符号情報群に含まれる第2種類の符号情報のそれぞれは、文字を示す情報である、ことを特徴とする請求項2に記載の変換プログラム。前記コンピュータに、前記第1種類の符号情報群に含まれる第1種類の符号情報のそれぞれについて、関連付けて前記記憶部に記憶する第2種類の符号情報を、引数に前記入力情報を用いて所定のアルゴリズムの演算を行なった結果に応じて決定する、処理を実行させることを特徴とする請求項1~3のいずれか1項に記載の変換プログラム。前記所定のアルゴリズムは、前記入力情報が示す値を所定値で除算した場合の余りの値を算出する処理である、ことを特徴とする請求項1~5のいずれか1項に記載の変換プログラム。コンピュータが、第1種類の符号情報群に含まれる第1種類の符号情報のそれぞれについて、入力された入力情報に応じて第2種類の符号情報群に含まれる第2種類の符号情報の何れかと関連付けて記憶部に記憶し、変換対象データ内にある第1種類の符号情報が含まれる場合に、前記ある第1種類の符号情報を、前記ある第1種類の符号情報と関連付けて前記記憶部に記憶された第2種類の符号情報に変換する、処理を実行することを特徴とする変換方法。第1種類の符号情報群を記憶する記憶部と、前記記憶部に記憶された第1種類の符号情報群に含まれる第1種類の符号情報のそれぞれについて、入力された入力情報に応じて第2種類の符号情報群に含まれる第2種類の符号情報の何れかと関連付けて前記記憶部に記憶する記憶制御部と、変換対象データ内にある第1種類の符号情報が含まれる場合に、前記ある第1種類の符号情報を、前記ある第1種類の符号情報と関連付けて前記記憶部に記憶された第2種類の符号情報に変換する変換部と、を含むことを特徴とする変換装置。第1種類の符号情報群を記憶する第1の記憶部と、前記第1の記憶部に記憶された第1種類の符号情報群に含まれる第1種類の符号情報のそれぞれについて、入力された入力情報及び所定のアルゴリズムに応じて第2種類の符号情報群に含まれる第2種類の符号情報の何れかと関連付けて前記第1の記憶部に記憶する第1の記憶制御部と、変換対象データ内にある第1種類の符号情報が含まれる場合に、前記ある第1種類の符号情報を、前記ある第1種類の符号情報と関連付けて前記第1の記憶部に記憶された第2種類の符号情報に変換する第1の変換部と、を含む第1の変換装置と、前記第2種類の符号情報群を記憶する第2の記憶部と、前記第2の記憶部に記憶された第2種類の符号情報群に含まれる第2種類の符号情報のそれぞれについて、入力された入力情報及び前記所定のアルゴリズムに応じて前記第1種類の符号情報群に含まれる第2種類の符号情報の何れかと関連付けて前記第2の記憶部に記憶する第2の記憶制御部と、前記第1の変換部で変換された前記変換対象データ内にある第2種類の符号情報が含まれる場合に、前記ある第2種類の符号情報を、前記ある第2種類の符号情報と関連付けて前記第2の記憶部に記憶された第1種類の符号情報に変換する第2の変換部と、を含む第2の変換装置と、を含むことを特徴とする変換システム。しかしながら、上記の従来の技術では、圧縮処理を行ったうえにさらに暗号化処理を行う、もしくは、復号化処理を行ったうえにさらに伸張処理を行うため、処理対象データのサイズに応じて処理コストが増大する。1つの側面では、本発明は、処理対象データのサイズ増大に応じた処理コストの増大を抑制することを目的とする。本願の開示する変換プログラムは、一つの態様において、コンピュータに、第1種類の符号情報群に含まれる第1種類の符号情報のそれぞれについて、次のような処理を実行させる。すなわち、変換プログラムは、入力された入力情報に応じて第2種類の符号情報群に含まれる第2種類の符号情報の何れかと関連付けて記憶部に記憶する処理を実行させる。そして、変換プログラムは、変換対象データ内にある第1種類の符号情報が含まれる場合に、当該ある第1種類の符号情報を、当該ある第1種類の符号情報と関連付けて記憶部に記憶された第2種類の符号情報に変換する処理を実行させる。1態様によれば、処理対象データのサイズ増大に応じた処理コストの増大を抑制することができる。以下に、本願の開示する伸張プログラム、圧縮プログラム、圧縮装置、伸張装置、圧縮方法および伸張方法の各実施例を図面に基づいて詳細に説明する。各実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。なお、伸張プログラム、圧縮プログラムは、変換プログラムの一例である。また、圧縮装置、伸張装置は、変換装置の一例である。また、圧縮方法、伸張方法は、変換方法の一例である。[システム1の構成例]実施例1に係るシステムについて説明する。図1は、実施例1に係るシステムの構成の一例を示す図である。本実施例に係るシステム1は、サーバ2と、利用者端末3とを有する。サーバ2と、利用者端末3とは、データの送受信が可能なように接続される。図1の例では、サーバ2と、利用者端末3とは、インターネット4を介して接続されている。なお、サーバ2と、利用者端末3とは、無線で接続されてもよい。サーバ2は、辞書や電子書籍などのデジタルコンテンツのファイルのデータを圧縮する。サーバ2は、圧縮されたデジタルコンテンツのファイルのデータを、インターネット4を介して利用者端末3に送信する。利用者端末3は、受信したデジタルコンテンツのファイルのデータを伸張する。利用者端末3は、伸張したデジタルコンテンツのファイルを再生する。サーバ2は、入力部5と、出力部6と、送受信部7と、記憶部8と、制御部9とを有する。入力部5は、各種の情報を制御部9に入力する。例えば、入力部5は、ユーザから、デジタルコンテンツを受け付けて、受け付けたデジタルコンテンツを制御部9に入力する。また、入力部5は、ユーザから、後述の圧縮処理を実行する指示を受け付けて、受け付けた指示を制御部9に入力する。また、入力部5は、ユーザから、パスワードを受け付けて、受け付けたパスワードを制御部9に入力する。パスワードの一例としては、数字およびアルファベットが挙げられる。例えば、パスワードとしては、4桁の数字3212が挙げられる。また、入力部5のデバイスの一例としては、マウスやキーボードなどの操作受付デバイスが挙げられる。出力部6は、各種の情報を出力する。例えば、出力部6は、サーバ2の稼働状況を表示する。出力部6のデバイスの一例としては、LCDLiquidCrystalDisplayやCRTCathodeRayTubeなどの表示デバイスなどが挙げられる。送受信部7は、サーバ2と利用者端末3との通信を行うための通信インタフェースである。例えば、送受信部7は、利用者端末3からインターネット4を介して、コンテンツデータベースDataBaseに登録されたデジタルコンテンツのファイルの送信要求を受信すると、受信した送信要求を制御部9へ送信する。なお、以下では、データベースをDBと略記する。また、送受信部7は、制御部9から後述のコンテンツDB8aに登録されたデジタルコンテンツのファイルを受信すると、受信したデジタルコンテンツのファイルを、インターネット4を介して利用者端末3へ送信する。記憶部8は、各種情報を記憶する。例えば、記憶部8は、コンテンツDB8a、辞書8bを記憶する。コンテンツDB8aには、圧縮されたデジタルコンテンツのファイルが登録される。例えば、コンテンツDB8aには、後述の圧縮部9aにより圧縮されたデジタルコンテンツのファイルが登録される。図2は、コンテンツDBの一例を示す図である。図2の例では、コンテンツDB8aに、圧縮されたデジタルコンテンツA~Kの各ファイルが登録されている場合が示されている。コンテンツDB8aに登録されたデジタルコンテンツのファイルは、利用者端末3からの指示に応じて、利用者端末3へ送信される。辞書8bは、LZ78の圧縮方式で用いられる動的辞書である。LZ78の圧縮方式では、トライの木で表される動的辞書が用いられて、ファイルの圧縮および伸張が行われる。トライの木の葉および節点には、文字の文字コードと参照番号とが格納されている。図3は、トライの木の一例を示す図である。図3の例では、初期化された辞書8bが示すトライの木の一例が示されている。図3の例では、初期化された辞書8bのトライの木の葉には、16進数で00~FFまでの256種類の文字のコードと、参照番号とが登録された場合が示されている。ここで、参照番号は、圧縮符号として用いられる。図3の例では、文字aの文字コードは、10進数で97である。また、図3の例では、文字aの圧縮符号は、16進数で61である。なお、トライの木のルートに接続された一列目の葉および節点は、第一世代とも称される。同様に、トライの木のN列目の葉および節点は、第N世代と称される。第一世代の葉および節点では、文字のコードと圧縮符号とは同一である。図4は、トライの木の第一世代の圧縮符号が変更された場合の一例を示す図である。図4の例では、図3の例において16進数で61であったaの圧縮符号が、16進数で54に変更された場合が示されている。また、図4の例では、図3の例において16進数で62であったbの圧縮符号が、16進数で00に変更された場合が示されている。図4の例のトライの木の第一世代の圧縮符号は、後述の変更部9bによりスクランブルされて、コードと圧縮符号との組合せが変更される。これにより、圧縮されたデータの解読を試みる攻撃者などは、初期化時に辞書8bに登録される256種類の文字のコードと圧縮符号との組合せを把握していたとしても、かかる組合せが変更されるため、256種類の文字の解読が困難となる。図5は、トライの木の第二世代以降の葉および節点が追加された場合の一例を示す図である。図5の例では、文字列bitの参照番号は、16進数で102である。図5の例では、文字列bitの圧縮符号として参照番号102を用いることで、文字列bitの圧縮を行うことができる。また、図5の例では、圧縮されたファイルのデータ102を、文字列bitに置き換えることで、伸張を行うことができる。ここで、図5の例では、第一世代の圧縮符号が変更されているため、第二世代以降の葉に登録された圧縮符号が用いられて圧縮されたデータは、攻撃者などによる解読が困難なデータである。具体例を挙げて説明する。例えば、攻撃者などが、圧縮されたbitの文字列を解読する場合を想定する。この場合、攻撃者などは、初期化時に辞書8bに登録される256種類の文字のコードと圧縮符号との組合せを把握していたとしても、かかる組合せが変更されるため、bitの先頭文字bの圧縮符号を特定するのが困難となる。すなわち、攻撃者などは、先頭文字bのトライの木での格納位置を特定するのが困難となるため、結果的にbitの圧縮符号を特定するのが困難となる。記憶部8は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部8は、上記の種類の記憶装置に限定されるものではなく、RAMRandomAccessMemory、ROMReadOnlyMemoryであってもよい。制御部9は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。図1に示すように、制御部9は、圧縮部9aと、変更部9bとを有する。圧縮部9aは、後述の変更部9bにより、文字のコードと、圧縮符号との組合せが変更された辞書8bを用いて、入力部5から入力されたデジタルコンテンツのファイルのデータを圧縮しつつ、辞書8bを更新する。具体例を挙げて説明する。圧縮部9aは、LZ78の圧縮方式により、まず、辞書8bを初期化して、予め定められた複数の文字のコードと、圧縮符号との組合せを登録する。先の図3の例では、圧縮部9aは、16進数で00~FFまでの256種類の文字のコードと、参照番号とを辞書8bに登録する。そして、圧縮部9aは、変更部9bにより、文字と圧縮符号との組合せが変更された辞書8bを用いて、LZ78の圧縮方式によって、デジタルコンテンツのファイルのデータを圧縮しつつ、辞書8bを更新する。そして、圧縮部9aは、圧縮したファイルをデジタルコンテンツごとに、コンテンツDB8aに登録する。また、圧縮部9aは、利用者端末3からのデジタルコンテンツのファイルの送信要求を受信すると、デジタルコンテンツのファイルをコンテンツDB8aから取得し、取得したファイルを、送受信部7に送信する。変更部9bは、入力部5から入力されたパスワードに基づいて、文字列と圧縮符号との複数の組合せが登録された辞書8bの文字列と圧縮符号との組合せを変更する。具体例を挙げて説明する。まず、変更部9bは、パスワードを取得する。そして、変更部9bは、パスワードに含まれる数字0~9のそれぞれを16進数の00~09とし、アルファベットa~zのそれぞれを16進数の0A~23として、各桁の和を算出する。例えば、変更部9bは、パスワードとして3212を取得した場合には、16進数で083212を算出する。続いて、変更部9bは、各桁の和を所定値で除算した場合の剰余Sを算出する。例えば、各桁の和が08であり、かかる所定値が10進数で16である場合には、変更部9bは、剰余Sとして88÷16=0余り8を算出する。その後、変更部9bは、初期時に辞書8bに登録された所定数の文字と圧縮符号との組合せを2Sごとにブロック化する。図6は、変更部の処理の一例を説明するための図である。図6の例では、S=8の場合であり、変更部9bは、16個の文字と圧縮符号との組合せを16個ごとにブロック化した場合が示されている。図6の例では、1番目のブロック90は、文字NUL、SOH、BEL、BS、TAB、SIの16個の文字のそれぞれのコードと、圧縮符号との組合せを含む。すなわち、図6の例では、1番目のブロック90は、文字NULのコード0と圧縮符号00との組合せを含む。また、図6の例では、1番目のブロック90は、文字SOHのコード1と圧縮符号01との組合せを含む。また、図6の例では、1番目のブロック90は、文字BELのコード7と圧縮符号07との組合せを含む。また、図6の例では、1番目のブロック90は、文字BSのコード8と圧縮符号08との組合せを含む。また、図6の例では、1番目のブロック90は、文字TABのコード9と圧縮符号09との組合せを含む。また、図6の例では、1番目のブロック90は、文字SIのコード15と圧縮符号0Fとの組合せを含む。さらに、図6の例では、2番目のブロック91は、文字DLEの16個の文字のそれぞれのコードと、圧縮符号との組合せを含む。このようにして、変更部9bは、1番目のブロックからN番目のブロックまでを生成する。なお、Nは、処理対象の世代の葉および節点の個数を2Sで除した値の小数点以下を切り上げた整数値である。ここで、本実施例では、処理対象の世代は、第一世代である。続いて、変更部9bは、ブロック1~Nごとに、次のような処理を行う。すなわち、変更部9bは、ブロック内の文字のコードと圧縮符号との複数の組合せのそれぞれについて、圧縮符号に上記の剰余Sを加えた値を、上記の所定値で除算した場合の剰余S ́を算出する。そして、変更部9bは、ブロック内の文字のコードと圧縮符号との複数の組合せのそれぞれについて、圧縮符号を、剰余S ́に変更する。図6の例では、剰余Sが8であるため、変更部9bは、文字NULの圧縮符号を080008÷所定値16=0余り08に変更する。また、図6の例では、変更部9bは、文字SOHの圧縮符号を090108÷所定値16=0余り09に変更する。また、図6の例では、変更部9bは、文字BELの圧縮符号を0F0708÷所定値16=0余り0Fに変更する。また、図6の例では、変更部9bは、文字BSの圧縮符号を100808÷所定値16=1余り00に変更する。また、図6の例では、1番目のブロック90は、文字TABの圧縮符号を010908÷所定値16=1余り01に変更する。また、図6の例では、変更部9bは、文字SIの圧縮符号を070F08÷所定値16=1余り07に変更する。さらに、図6の例では、変更部9bは、文字DLEの圧縮符号を18に変更する。このようにして、変更部9bは、各ブロック単位で、入力部5から入力されたパスワードに基づいて、文字列と圧縮符号との複数の組合せが登録された辞書8bの文字列と圧縮符号との組合せを変更する。なお、ブロック1の場合について例示したが、ブロック2以上については、次のようにして、剰余S ́を算出することができる。すなわち、ブロック1と同様に、ブロック内で、文字のコードと圧縮符号との組み合わせが入れ替わるように、m>2ブロックごとに、上述した除算したことにより算出した剰余S ́に、m-1×2Sの値が加算された値が剰余S ́となる。このように、本実施例に係るサーバ2では、辞書8bの第一世代の葉および節点の圧縮符号がスクランブルされて、コードと圧縮符号との組合せが変更される。これにより、圧縮されたデータの解読を試みる攻撃者などは、初期化時に辞書8bに登録される複数の種類の文字のコードと圧縮符号との組合せを把握していたとしても、かかる組合せが変更されるため、これらの複数の種類の文字の解読が困難となる。この結果、これらの複数の種類の文字を先頭文字に含む文字列の解読についても困難となる。また、本実施例に係るサーバ2では、辞書8bの圧縮符号をスクランブルするだけで、複雑な暗号化の処理を行わずに、解読が困難な圧縮データが生成される。したがって、本実施例に係るサーバ2によれば、簡易な圧縮処理により難読化を図ることができる。また、処理対象データのサイズ増大に応じた処理コストの増大を抑制することができる。また、本実施例に係るサーバ2によれば、辞書8bの圧縮符号をスクランブルするだけで、データを圧縮するたびに圧縮されたデータおよび生データにスクランブル処理を行っていないので、簡易に圧縮データの難読化を図ることができる。利用者端末3は、入力部10と、出力部11と、送受信部12と、記憶部13と、制御部14とを有する。入力部10は、各種情報を制御部14に入力する。例えば、入力部10は、ユーザから後述の伸張処理を実行する指示を受け付けて、受け付けた指示を制御部14に入力する。また、入力部10は、ユーザからパスワードを受け付けて、受け付けたパスワードを制御部14に入力する。入力部10のデバイスの一例としては、マウスやキーボードなどの操作受付デバイスが挙げられる。出力部11は、各種の情報を出力する。例えば、出力部11は、後述の再生部14cによって、再生されたデジタルコンテンツを表示する。出力部11のデバイスの一例としては、LCDLiquidCrystalDisplayやCRTCathodeRayTubeなどの表示デバイスが挙げられる。送受信部12は、利用者端末3とサーバ2との通信を行うための通信インタフェースである。例えば、送受信部12は、制御部14から、コンテンツDBに登録されたデジタルコンテンツのファイルの送信要求を受信すると、受信した送信要求を、インターネット4を介してサーバ2へ送信する。また、送受信部12は、サーバ2からコンテンツDB8aに登録されたデジタルコンテンツのファイルを受信すると、受信したファイルを制御部14へ送信する。記憶部13は、各種情報を記憶する。例えば、記憶部13は、コンテンツDB13a、辞書13bを記憶する。コンテンツDB13aには、後述の伸張部14aにより伸張されたデジタルコンテンツの各ファイルが登録される。辞書13bは、LZ78の圧縮方式で用いられる動的辞書である。上述した辞書8bと同様に、辞書13bは、後述の伸張部14aにより、初期化されると、予め定められた文字のコードと、圧縮符号との複数の組合せが登録される。また、辞書13bが示すトライの木の第一世代の圧縮符号は、辞書8bと同様に、後述の変更部14bによりスクランブルされて、コードと圧縮符号との組合せが変更される。これにより、圧縮されたデータの解読を試みる攻撃者などは、初期化時に辞書13bに登録される256種類の文字のコードと圧縮符号との組合せを把握していたとしても、かかる組合せが変更されるため、256種類の文字の解読が困難となる。また、辞書13bは、辞書8bと同様に、トライの木の第一世代の圧縮符号が変更された後に、伸張部14aにより、トライの木の第二世代以降の葉および節点が追加されて、更新される。記憶部13は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部13は、上記の種類の記憶装置に限定されるものではなく、RAMRandomAccessMemory、ROMReadOnlyMemoryであってもよい。制御部14は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。図1に示すように、制御部14は、伸張部14aと、変更部14bと、再生部14cとを有する。伸張部14aは、後述の変更部14bにより、文字のコードと、圧縮符号との組合せが変更された辞書13bを用いて、サーバ2から入力されたデジタルコンテンツのファイルのデータを伸張しつつ、辞書13bを更新する。具体例を挙げて説明する。伸張部14aは、LZ78の圧縮方式により、まず、辞書13bを初期化して、予め定められた複数の文字のコードと、圧縮符号との組合せを登録する。ここで、伸張部14aは、圧縮部9aによる辞書8aの初期化の際に、辞書8aに登録された文字と圧縮符号との組合せと同一の組合せを辞書13bの初期化時に登録する。そして、伸張部14aは、変更部14bにより、文字と圧縮符号との組合せが変更された辞書13bを用いて、LZ78の圧縮方式によって、デジタルコンテンツのファイルのデータを伸張しつつ、辞書13bを更新する。そして、伸張部14aは、伸張したファイルをデジタルコンテンツごとに、コンテンツDB13aに登録する。変更部14bは、入力部10から入力されたパスワードに基づいて、文字列と圧縮符号との複数の組合せが登録された辞書13bの文字列と圧縮符号との組合せを変更する。具体例を挙げて説明する。まず、変更部14bは、パスワードを取得する。そして、変更部14bは、変更部9aと同様に、パスワードに含まれる数字0~9のそれぞれを16進数の00~09とし、アルファベットa~zのそれぞれを16進数の0A~23として、各桁の和を算出する。その後、変更部14bは、変更部9aと同様に、初期時に辞書13bに登録された所定数の文字と圧縮符号との組合せを2Sごとにブロック化する。図6の例では、S=8の場合であり、変更部14bは、16個の文字と圧縮符号との組合せを16個ごとにブロック化した場合が示されている。変更部14bは、1番目のブロックからN番目のブロックまでを生成する。なお、Nは、処理対象の世代の葉および節点の個数を2Sで除した値の小数点以下を切り上げた整数値である。ここで、本実施例では、処理対象の世代は、第一世代である。続いて、変更部14bは、ブロック1~Nごとに、次のような処理を行う。すなわち、変更部14bは、変更部9aと同様に、ブロック内の文字のコードと圧縮符号との複数の組合せのそれぞれについて、圧縮符号に剰余Sを加えた値を、上記の所定値で除算した場合の剰余S ́を算出する。そして、ブロック内の文字のコードと圧縮符号との複数の組合せのそれぞれについて、圧縮符号を、剰余S ́に変更する。図6の例では、剰余Sが8であるため、変更部14bは、文字NULの圧縮符号を080008÷所定値16=0余り08に変更する。また、図6の例では、変更部14bは、文字SOHの圧縮符号を090108÷所定値16=0余り09に変更する。また、図6の例では、変更部14bは、文字BELの圧縮符号を0F0708÷所定値16=0余り0Fに変更する。また、図6の例では、変更部14bは、文字BSの圧縮符号を100808÷所定値16=1余り00に変更する。また、図6の例では、1番目のブロック90は、文字TABの圧縮符号を010908÷所定値16=1余り01に変更する。また、図6の例では、変更部14bは、文字SIの圧縮符号を070F08÷所定値16=1余り07に変更する。さらに、図6の例では、変更部14bは、文字DLEの圧縮符号を18に変更する。このようにして、変更部14bは、各ブロック単位で、入力部10から入力されたパスワードに基づいて、文字列と圧縮符号との複数の組合せが登録された辞書13bの文字列と圧縮符号との組合せを変更する。なお、ブロック1の場合について例示したが、ブロック2以上については、次のようにして、剰余S ́を算出することができる。すなわち、ブロック1と同様に、ブロック内で、文字のコードと圧縮符号との組み合わせが入れ替わるように、m>2ブロックごとに、上述した除算したことにより算出した剰余S ́に、m-1×2Sの値が加算された値が剰余S ́となる。ここで、本実施例に係る利用者端末3では、入力されたパスワードが、サーバ2で入力された正規のパスワードと一致しない場合には、上記の所定値が大きくなるほど、算出される剰余Sが、サーバ2で算出される剰余Sと一致する可能性が低くなる。そのため、本実施例に係る利用者端末3では、入力されたパスワードが正規のパスワードでない場合には、上記の所定値が大きくなるほど、辞書13bの登録内容が辞書8bの登録内容と一致する可能性が低くなる。このため、本実施例に係る利用者端末3では、結果として伸張されるデータが正規のものとなる可能性も低くなる。したがって、本実施例に係る利用者端末3によれば、簡易に難読化を図ることができる。再生部14cは、コンテンツDB13aに登録されたデジタルコンテンツを取得し、取得したデジタルコンテンツを出力部11の表示デバイスに再生する。制御部14は、ASICApplicationSpecificIntegratedCircuitやFPGAFieldProgrammableGateArrayなどの集積回路を有する。なお、制御部14は、CPUCentralProcessingUnitやMPUMicroProcessingUnitなどの電子回路を有してもよい。[処理の流れ]次に、本実施例に係るシステム1の処理の流れを説明する。図7は、実施例1に係るシステムのシーケンス図である。図7に示すように、サーバ2は、後述の圧縮処理を実行するステップS101。サーバ2は、圧縮されたデジタルコンテンツのファイルをコンテンツDB8aに登録するステップS102。一方、利用者端末3は、ユーザから後述の伸張処理を実行する指示を受け付けるとステップS103、デジタルコンテンツのファイルの送信要求をサーバ2に送信するステップS104。サーバ2は、デジタルコンテンツのファイルの送信要求を受信すると、コンテンツDB8aに登録されたデジタルコンテンツのファイルを利用者端末3に送信するステップS105。利用者端末3は、デジタルコンテンツのファイルを受信するステップS106と、後述の伸張処理を実行するステップS107。利用者端末3は、伸張されたデジタルコンテンツのファイルをコンテンツDB13aに登録するステップS108。利用者端末3は、コンテンツDB13aに登録されたデジタルコンテンツを再生するステップS109。次に、本実施例に係るサーバ2の処理の流れを説明する。図8は、実施例1に係る圧縮処理の手順を示すフローチャートである。この圧縮処理の実行タイミングとしては様々なタイミングが考えられる。例えば、圧縮処理は、入力部5からデジタルコンテンツが入力された場合に実行されるようにしてもよい。図8に示すように、圧縮部9aは、デジタルコンテンツのファイルを取得するステップS201。圧縮部9aは、辞書8bを初期化するステップS202。変更部9bは、入力部5からパスワードが入力されたか否かを判定するステップS203。パスワードが入力されていない場合ステップS203否定には、変更部9bは、再びステップS203で、入力部5からパスワードが入力されたか否かを判定する。一方、パスワードが入力された場合ステップS203肯定には、変更部9bは、パスワードの各桁の和を算出し、算出した和を所定値で除算した場合の剰余Sを算出するステップS204。変更部9bは、処理対象の世代の葉および節点の個数を2Sで除した値の小数点以下を切り上げた整数値Nを算出するステップS205。変更部9bは、変数Kの値に1を設定するステップS206。変更部9bは、処理対象の世代のK番目のブロックの圧縮符号をスクランブルして、文字のコードと圧縮符号との組合せを変更するステップS207。変更部9bは、変数Kの値が整数値N以上となったか否かを判定するステップS208。変数Kの値が整数値N未満である場合ステップS208否定には、変更部9bは、変数Kの値を1つインクリメントしステップS209、ステップS207へ戻る。一方、変数Kの値が整数値N以上である場合ステップS208肯定には、圧縮部9aは、辞書8bを用いて、LZ78の圧縮方式によって、デジタルコンテンツのファイルのデータを圧縮しつつ、辞書8bを更新するステップS210。そして、圧縮部9aは、処理結果を制御部9の内部メモリに格納し、リターンする。次に、本実施例に係る利用者端末3の処理の流れを説明する。図9は、実施例1に係る伸張処理の手順を示すフローチャートである。伸張処理においても、図8において説明した圧縮処理と共通の辞書更新アルゴリズムを用いる。図9に示すように、伸張部14aは、デジタルコンテンツの圧縮ファイルをサーバ2から取得するステップS301。伸張部14aは、辞書13bを初期化するステップS302。変更部14bは、入力部10からパスワードが入力されたか否かを判定するステップS303。パスワードが入力されていない場合ステップS303否定には、変更部14bは、再びステップS303で、入力部10からパスワードが入力されたか否かを判定する。一方、パスワードが入力された場合ステップS303肯定には、変更部14bは、パスワードの各桁の和を算出し、算出した和を所定値で除算した場合の剰余Sを算出するステップS304。変更部14bは、処理対象の世代の葉および節点の個数を2Sで除した値の小数点以下を切り上げた整数値Nを算出するステップS305。変更部14bは、変数Kの値に1を設定するステップS306。変更部14bは、処理対象の世代のK番目のブロックの圧縮符号をスクランブルして、文字のコードと圧縮符号との組合せを変更するステップS307。変更部14bは、変数Kの値が整数値N以上となったか否かを判定するステップS308。変数Kの値が整数値N未満である場合ステップS308否定には、変更部14bは、変数Kの値を1つインクリメントしステップS309、ステップS307へ戻る。一方、変数Kの値が整数値N以上である場合ステップS308肯定には、伸張部14aは、辞書13bを用いて、LZ78の圧縮方式によって、デジタルコンテンツのファイルのデータを伸張しつつ、辞書13bを更新するステップS310。そして、伸張部14aは、処理結果を制御部14の内部メモリに格納し、リターンする。上述してきたように、本実施例に係るサーバ2では、辞書8bの第一世代の葉および節点の圧縮符号がスクランブルされて、コードと圧縮符号との組合せが変更される。これにより、圧縮されたデータの解読を試みる攻撃者などは、初期化時に辞書8bに登録される複数の種類の文字のコードと圧縮符号との組合せを把握していたとしても、かかる組合せが変更されるため、これらの複数の種類の文字の解読が困難となる。この結果、これらの複数の種類の文字を先頭文字に含む文字列の解読についても困難となる。また、本実施例に係るサーバ2では、辞書8bの圧縮符号をスクランブルするだけで、複雑な暗号化の処理を行わずに、解読が困難な圧縮データが生成される。したがって、本実施例に係るサーバ2によれば、簡易な圧縮処理により難読化を図ることができる。また、処理対象データのサイズ増大に応じた処理コストの増大を抑制することができる。また、本実施例に係るサーバ2によれば、辞書8bの圧縮符号をスクランブルするだけで、データを圧縮するたびに圧縮されたデータおよび生データにスクランブル処理を行っていないので、簡易に圧縮データの難読化を図ることができる。また、本実施例に係る利用者端末3では、入力されたパスワードが、サーバ2で入力された正規のパスワードと一致しない場合には、上記の所定値が大きくなるほど、算出される剰余Sが、サーバ2で算出される剰余Sと一致する可能性が低くなる。そのため、本実施例に係る利用者端末3では、入力されたパスワードが正規のパスワードでない場合には、上記の所定値が大きくなるほど、辞書13bの登録内容が辞書8bの登録内容と一致する可能性が低くなる。このため、本実施例に係る利用者端末3では、結果として伸張されるデータが正規のものとなる可能性も低くなる。したがって、本実施例に係る利用者端末3によれば、簡易に難読化を図ることができる。さて、上記の実施例1では、第一世代の圧縮符号をスクランブルする場合を例示したが、開示の装置はこれに限定されない。そこで、実施例2では、第二世代以降も圧縮符号をスクランブルする場合について説明する。[システム20の構成例]実施例2に係るシステムについて説明する。図10は、実施例2に係るシステムの構成の一例を示す図である。本実施例に係るシステム20は、サーバ21と、利用者端末22とを有する。サーバ21は、実施例1に係る制御部9に代えて制御部23を有する点が、実施例1と異なる。利用者端末22は、実施例1に係る制御部14に代えて制御部24を有する点が、実施例1と異なる。なお、以下では、上記の実施例1と同様の機能を果たす各部や各機器については図1と同様の符号を付し、その説明は省略する場合がある。サーバ21は、辞書や電子書籍などのデジタルコンテンツのファイルのデータを圧縮する。サーバ21は、圧縮されたデジタルコンテンツのファイルのデータを、インターネット4を介して利用者端末22に送信する。利用者端末22は、受信したデジタルコンテンツのファイルのデータを伸張する。利用者端末22は、伸張したデジタルコンテンツのファイルを再生する。サーバ21は、入力部5と、出力部6と、送受信部7と、記憶部8と、制御部23とを有する。制御部23は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。図10に示すように、制御部23は、圧縮部23aと、変更部23bとを有する。圧縮部23aは、実施例1に係る圧縮部9aと同様の処理を行う。すなわち、圧縮部23aは、後述の変更部23bにより、文字のコードと圧縮符号との組合せが変更された辞書8bを用いて、デジタルコンテンツのファイルのデータを圧縮する。また、圧縮部23aは、圧縮された文字列の圧縮前の文字列を含む文字列であって辞書8bに未登録の文字列と、圧縮符号との組合せを新たに辞書8bに登録する。変更部23bは、実施例1に係る変更部9bと同様の処理を行う。さらに、変更部23bは、パスワードに基づいて、辞書8bに新たに登録された文字列と圧縮符号との組合せを新たに変更する。具体例を挙げて説明する。変更部23bは、辞書8bに文字列と圧縮符号との組合せが新たに登録されるたびに、新たに登録された文字列の文字のうち、新規に追加された文字の世代を処理対象の世代として特定する。図11は、実施例2に係るシステムが実行する処理の一例を説明するための図である。図11の例では、辞書8bに、文字列bitのコード98105116と、圧縮符号102との組合せが登録されている場合が示されている。図11の例において、辞書8bに、未登録の文字列butのコードと圧縮符号との組合せが圧縮部23aにより新たに登録されると、変更部23bは、butのuの第二世代と、tの第三世代とを処理対象の世代として特定する。そして、変更部23bは、実施例1に係る変更部9bが辞書8bに登録された第一世代の文字列と圧縮符号との組合せを変更する方法と同様の方法で、特定した処理対象の世代の文字列と圧縮符号との組合せを変更する。図12は、実施例2に係るシステムが実行する処理の一例を説明するための図である。図12の例は、図11の例において辞書8bに未登録の文字列butのコードと圧縮符号との組合せが、圧縮部23aにより辞書8bに新たに登録された場合の変更部23bの処理の一例を示す。図12の例では、変更部23bは、文字列butの第二世代の文字u、第三世代の文字tのそれぞれの圧縮符号と、文字列bitの第二世代の文字i、第三世代の文字tのそれぞれの圧縮符号とを変更する。すなわち、図12の例では、変更部23bは、文字列butの第二世代の文字uに対応する圧縮符号を101に変更し、第三世代の文字tに対応する圧縮符号を102に変更する。また、図12の例では、変更部23bは、文字列bitの第二世代の文字iに対応する圧縮符号を103に変更し、第三世代の文字tに対応する圧縮符号を104に変更する。なお、ブロック内で、文字のコードと圧縮符号との組み合わせが入れ替わるように、適宜、そのブロック内の圧縮符号に応じた値が剰余S ́に加算され、加算された結果得られた剰余S ́が文字列と組み合わせられる。このように、本実施例に係るサーバ21では、辞書8bの第一世代、および、辞書8bに新規に追加された文字の世代の葉および節点の圧縮符号がスクランブルされて、コードと圧縮符号との組合せが変更される。これにより、圧縮されたデータの解読を試みる攻撃者などは、初期化時に辞書8bに登録される複数の種類の文字のコードと圧縮符号との組合せを把握していたとしても、かかる組合せが変更されるため、これらの複数の種類の文字の解読が困難となる。また、本実施例に係るサーバ21では、辞書8bの圧縮符号をスクランブルするだけで、複雑な暗号化の処理を行わずに、解読が困難な圧縮データが生成される。したがって、本実施例に係るサーバ21によれば、簡易な圧縮処理により難読化を図ることができる。また、処理対象データのサイズ増大に応じた処理コストの増大を抑制することができる。また、本実施例に係るサーバ21によれば、辞書8bの圧縮符号をスクランブルするだけで、データを圧縮するたびに圧縮されたデータおよび生データにスクランブル処理を行っていないので、簡易に圧縮データの難読化を図ることができる。利用者端末22は、入力部10と、出力部11と、送受信部12と、記憶部13と、制御部24とを有する。制御部24は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。図10に示すように、制御部24は、伸張部24aと、変更部24bと、再生部14cとを有する。伸張部24aは、実施例1に係る伸張部14aと同様の処理を行う。すなわち、伸張部24aは、後述の変更部24bにより、文字のコードと圧縮符号との組合せが変更された辞書13bを用いて、デジタルコンテンツのファイルのデータを伸張する。また、伸張部24aは、伸張された文字を含む文字列であって辞書13bに未登録の文字列と、圧縮符号との組合せを新たに辞書13bに登録する。変更部24bは、実施例1に係る変更部14bと同様の処理を行う。さらに、変更部24bは、パスワードに基づいて、辞書13bに新たに登録された文字列と圧縮符号との組合せを新たに変更する。具体例を挙げて説明する。変更部24bは、辞書13bに文字列と圧縮符号との組合せが新たに登録されるたびに、新たに登録された文字列の文字のうち、新規に追加された文字の世代を処理対象の世代として特定する。例えば、文字列bitのコードと圧縮符号との組合せが辞書13bに登録されている場合に、未登録の文字列butのコードと圧縮符号との組合せが伸張部24aにより新たに登録されると、変更部24bは、次のような処理を行う。すなわち、変更部24bは、butのuの第二世代と、tの第三世代とを処理対象の世代として特定する。そして、変更部24bは、実施例1に係る変更部14bが辞書13bに登録された第一世代の文字列と圧縮符号との組合せを変更するのと同様に、特定した処理対象の世代の文字列と圧縮符号との組合せを変更する。例えば、文字列bitのコードと圧縮符号との組合せが辞書13bに登録されている場合に、未登録の文字列butのコードと圧縮符号との組合せが伸張部24aにより新たに登録されると、変更部24bは、次のような処理を行う。すなわち、変更部24bは、文字列butの第二世代の文字u、第三世代の文字tのそれぞれの圧縮符号と、文字列bitの第二世代の文字i、第三世代の文字tのそれぞれの圧縮符号とを変更する。なお、ブロック内で、文字のコードと圧縮符号との組み合わせが入れ替わるように、適宜、そのブロック内の圧縮符号に応じた値が剰余S ́に加算され、加算された結果得られた剰余S ́が文字列と組み合わせられる。このように、本実施例に係る利用者端末22では、入力されたパスワードが、サーバ21で入力された正規のパスワードと一致しない場合には、上記の所定値が大きくなるほど、算出される剰余Sが、サーバ21で算出される剰余Sと一致する可能性が低くなる。そのため、本実施例に係る利用者端末22では、入力されたパスワードが正規のパスワードでない場合には、上記の所定値が大きくなるほど、辞書13bの登録内容が辞書8bの登録内容と一致する可能性が低くなる。このため、本実施例に係る利用者端末22では、結果として伸張されるデータが正規のものとなる可能性も低くなる。したがって、本実施例に係る利用者端末22によれば、簡易に難読化を図ることができる。制御部24は、ASICApplicationSpecificIntegratedCircuitやFPGAFieldProgrammableGateArrayなどの集積回路を有する。なお、制御部24は、CPUCentralProcessingUnitやMPUMicroProcessingUnitなどの電子回路を有してもよい。[処理の流れ]次に、本実施例に係るサーバ21の処理の流れを説明する。図13は、実施例2に係る圧縮処理の手順を示すフローチャートである。この圧縮処理の実行タイミングとしては様々なタイミングが考えられる。例えば、圧縮処理は、入力部5からデジタルコンテンツが入力された場合に実行されるようにしてもよい。なお、本実施例に係るシステム20の処理の流れは、実施例1に係るシステム1のシーケンス図で示す処理の流れと同様であるので、説明を省略する。図13に示すステップS401~S409は、先の図8に示すステップS201~S209と同様であるので説明を省略する。図13に示すように、圧縮部23aは、辞書8bを用いて、デジタルコンテンツのファイルの未処理のデータを圧縮するステップS410。圧縮部23aは、デジタルコンテンツのファイルのデータが示す文字列のうち、今回圧縮された部分の文字列を先頭部分に含む文字列のコードが、辞書8bに未登録であるか否かを判定するステップS411。未登録である場合ステップS411肯定には、圧縮部23aは、圧縮された文字列の圧縮前の文字列を含む文字列であって辞書8bに未登録の文字列のコードと、圧縮符号との組合せを新たに辞書8bに登録するステップS412。一方、未登録でない場合ステップS411否定には、圧縮部23aは、デジタルコンテンツのファイルのデータのうち、圧縮処理が未処理のデータがあるか否かを判定するステップS416。圧縮処理が未処理のデータがある場合ステップS416肯定には、ステップS410へ戻る。圧縮処理が未処理のデータがない場合ステップS416否定には、圧縮部23aは、処理結果を制御部23の内部メモリに格納し、リターンする。変更部23bは、辞書8bに新たに登録された文字列の文字のうち新規に追加された文字の世代を処理対象の世代として特定し、特定した処理対象の世代のうち、下記のステップS414で未選択の処理対象の世代があるか否かを判定するステップS413。未選択の処理対象の世代がある場合ステップS413肯定には、変更部23bは、未選択の処理対象の世代を1つ選択するステップS414。変更部23bは、選択した処理対象の世代の葉および節点の個数が複数か否かを判定するステップS415。複数である場合ステップS415肯定には、ステップS405へ戻る。一方、未選択の処理対象の世代がない場合ステップS413否定、複数でない場合ステップS415否定には、ステップS416へ進む。次に、本実施例に係る利用者端末22の処理の流れを説明する。図14は、実施例2に係る伸張処理の手順を示すフローチャートである。図14に示すステップS501~S509は、先の図9に示すステップS301~S309と同様であるので説明を省略する。図14に示すように、伸張部24aは、辞書13bを用いて、デジタルコンテンツのファイルの未処理のデータを伸張するステップS510。伸張部24aは、今回伸張された文字列を先頭部分に含む文字列のコードが、辞書13bに未登録であるか否かを判定するステップS511。未登録である場合ステップS511肯定には、伸張部24aは、伸張された文字列を含む文字列であって辞書13bに未登録の文字列のコードと、圧縮符号との組合せを新たに辞書13bに登録するステップS512。一方、未登録でない場合ステップS511否定には、伸張部24aは、デジタルコンテンツのファイルのデータのうち、伸張処理が未処理のデータがあるか否かを判定するステップS516。伸張処理が未処理のデータがある場合ステップS516肯定には、ステップS510へ戻る。伸張処理が未処理のデータがない場合ステップS516否定には、伸張部24aは、処理結果を制御部24の内部メモリに格納し、リターンする。変更部24bは、辞書13bに新たに登録された文字列の文字のうち新規に追加された文字の世代を処理対象の世代として特定し、特定した処理対象の世代のうち、下記のステップS514で未選択の処理対象の世代があるか否かを判定するステップS513。未選択の処理対象の世代がある場合ステップS513肯定には、変更部24bは、未選択の処理対象の世代を1つ選択するステップS514。変更部24bは、選択した処理対象の世代の葉および節点の個数が複数か否かを判定するステップS515。複数である場合ステップS515肯定には、ステップS505へ戻る。一方、未選択の処理対象の世代がない場合ステップS513否定、複数でない場合ステップS515否定には、ステップS516へ進む。上述してきたように、本実施例に係るサーバ21では、辞書8bの第一世代、および、辞書8bに新たに登録された文字列の文字のうち新規に追加された文字の世代の圧縮符号がスクランブルされて、コードと圧縮符号との組合せが変更される。これにより、圧縮されたデータの解読を試みる攻撃者などは、初期化時に辞書8bに登録される複数の種類の文字のコードと圧縮符号との組合せを把握していたとしても、かかる組合せが変更されるため、これらの複数の種類の文字の解読が困難となる。また、本実施例に係るサーバ21では、辞書8bの圧縮符号をスクランブルするだけで、複雑な暗号化の処理を行わずに、解読が困難な圧縮データが生成される。したがって、本実施例に係るサーバ21によれば、簡易な圧縮処理により難読化を図ることができる。また、本実施例に係るサーバ21によれば、辞書8bの圧縮符号をスクランブルするだけで、データを圧縮するたびに圧縮されたデータおよび生データにスクランブル処理を行っていないので、簡易に圧縮データの難読化を図ることができる。また、本実施例に係る利用者端末22では、入力されたパスワードが、サーバ21で入力された正規のパスワードと一致しない場合には、上記の所定値が大きくなるほど、算出される剰余Sが、サーバ21で算出される剰余Sと一致する可能性が低くなる。そのため、本実施例に係る利用者端末22では、入力されたパスワードが正規のパスワードでない場合には、上記の所定値が大きくなるほど、辞書13bの登録内容が辞書8bの登録内容と一致する可能性が低くなる。このため、本実施例に係る利用者端末22では、結果として伸張されるデータが正規のものとなる可能性も低くなる。したがって、本実施例に係る利用者端末22によれば、簡易に難読化を図ることができる。さて、上記の実施例1、2では、パスワードが示す値を所定値で除算した場合の余りの値に応じて、辞書8b、13bに登録された文字のコードと圧縮符号との組合せを変更する場合を例示したが、開示の装置はこれに限定されない。そこで、実施例3では、他の方法で、辞書8b、13bに登録された文字と圧縮符号との組合せを変更する場合について説明する。実施例3では、第一のハッシュ関数を用いてパスワードから所定長の第一の値を生成し、第二のハッシュ関数を用いて第一の値から第二の値を生成する。そして、実施例3では、第二の値に応じて、辞書8b、13bに登録された文字と圧縮符号との組合せを変更する。[システム30の構成例]実施例3に係るシステムについて説明する。図15は、実施例3に係るシステムの構成の一例を示す図である。本実施例に係るシステム30は、サーバ31と、利用者端末32とを有する。サーバ31は、実施例1に係る制御部9に代えて制御部33を有する点が、実施例1と異なる。利用者端末32は、実施例1に係る制御部14に代えて制御部34を有する点が、実施例1と異なる。なお、以下では、上記の実施例1、2と同様の機能を果たす各部や各機器については図1、図10と同様の符号を付し、その説明は省略する場合がある。サーバ31は、辞書や電子書籍などのデジタルコンテンツのファイルのデータを圧縮する。サーバ31は、圧縮されたデジタルコンテンツのファイルのデータを、インターネット4を介して利用者端末32に送信する。利用者端末32は、受信したデジタルコンテンツのファイルのデータを伸張する。利用者端末32は、伸張したデジタルコンテンツのファイルを再生する。サーバ31は、入力部5と、出力部6と、送受信部7と、記憶部8と、制御部33とを有する。制御部33は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。図15に示すように、制御部33は、圧縮部33aと、変更部33bとを有する。圧縮部33aは、実施例1に係る圧縮部9aと同様の処理を行う。すなわち、圧縮部33aは、後述の変更部33bにより、文字のコードと圧縮符号との組合せが変更された辞書8bを用いて、デジタルコンテンツのファイルのデータを圧縮する。また、圧縮部33aは、圧縮された文字列の圧縮前の文字列を含む文字列であって辞書8bに未登録の文字列と、圧縮符号との組合せを新たに辞書8bに登録する。変更部33bは、入力部5から入力されたパスワードに基づいて、文字列と圧縮符号との複数の組合せが登録された辞書8bの文字列と圧縮符号との組合せを変更する。具体例を挙げて説明する。まず、変更部33bは、パスワードを取得する。そして、変更部33bは、パスワードをシードとして、SHASecureHashAlgorithm-256などの第一のハッシュ関数を用いて、次の第二のハッシュ関数で用いられる所定長のハッシュ値をシードとして取得する。続いて、変更部33bは、さらに第二のハッシュ関数を用いて、シードからハッシュ値を取得する。このように、第一のハッシュ関数を用いてパスワードからシードを生成するのは、第二のハッシュ関数で用いられるのに十分な所定長のシードを取得するためである。ここで、第二のハッシュ関数の一例としては、疑似乱数を発生させるための関数が挙げられる。以下では、第二のハッシュ関数として、疑似乱数を発生させるための関数を例に挙げて説明する。その後、変更部33bは、変更前の圧縮符号として16進数で00の値と、変更後の圧縮符号としてハッシュ値疑似乱数とを対応付けて記憶部8に格納する。図16は、記憶部に記憶された情報の一例を示す図である。図16の例では、変更部33bは、変更前の圧縮符号として16進数で00の値と、変更後の圧縮符号としてハッシュ値0316進数とを対応付けて記憶部8に格納した場合が示されている。次に、変更部33bは、再び、第二のハッシュ関数を用いて、シードからハッシュ値を取得。そして、変更部33bは、得られたハッシュ値が変更後の圧縮符号として記憶部8に登録されているか否かを判定する。得られたハッシュ値が変更後の圧縮符号として記憶部8に登録されている場合には、変更部33bは、次のような処理を行う。すなわち、変更部33bは、否定判定されるまで、得られたハッシュ値を1つインクリメントし、ハッシュ値が変更後の圧縮符号として記憶部8に登録されているか否かを判定することを繰り返し行う。ハッシュ値が変更後の圧縮符号として記憶部8に登録されていない場合には、変更部33bは、変更前の圧縮符号として16進数で01の値と、変更後の圧縮符号としてハッシュ値とを対応付けて記憶部8に格納する。図16の例では、変更部33bは、変更前の圧縮符号として16進数で01の値と、変更後の圧縮符号としてハッシュ値0716進数とを対応付けて記憶部8に格納した場合が示されている。変更部33bは、このような処理を、初期化の際に、辞書8bに登録された複数の文字の圧縮符号の分だけ繰り返し行う。例えば、初期化の際に辞書8bに16進数で00からFFまでの256種類の文字の圧縮符号が登録された場合には、変更部33bは、00からFFまでの256個の圧縮符号を変更前の圧縮符号として扱う。そして、変更部33bは、それぞれの変更前の圧縮符号に対して、変更後の圧縮符号を生成し、変更前の圧縮符号と、変更後の圧縮符号とを対応付けて記憶部8に格納する。そして、変更部33bは、初期化した辞書8bに登録された圧縮符号のそれぞれを、対応する変更後の圧縮符号のそれぞれに変更する。例えば、図16の例では、変更部33bは、圧縮符号が00の文字の圧縮符号を03に変更する。また、図16の例では、変更部33bは、圧縮符号が01の文字の圧縮符号を07に変更する。このようにして、変更部33bは、入力部5から入力されたパスワードに基づいて、文字列と圧縮符号との複数の組合せが登録された辞書8bの文字列と圧縮符号との組合せを変更する。上述した実施例1、2では、生成した剰余Sの値が1である場合には、文字のコードと圧縮符号との組合せの変更が、隣の組合せ間でしか発生しないことも想定される。しかししながら、本実施例では、パスワードから第二のハッシュ関数に用いられるシードの長さとして十分な所定長のシードを得て、第二のハッシュ関数を用いてシードからハッシュ値を生成している。このため、第二のハッシュ関数により生成されるハッシュ値は、ばらつきが出る。よって、本実施例では、文字のコードと圧縮符号との組合せの変更が、隣の組合せ間でのみ発生する確率が、実施例1、2よりも低くなる。図17は、実施例3における圧縮符号の変更の一例を説明するための図である。図17の例では、変更部33bは、文字NULの圧縮符号を00から9Eに変更する。また、図17の例では、変更部33bは、文字SOHの圧縮符号を01からC5に変更する。また、図17の例では、変更部33bは、文字aの圧縮符号を61から9Fに変更する。また、図17の例では、変更部33bは、文字bの圧縮符号を62から39に変更する。また、図17の例では、変更部33bは、文字DELの圧縮符号をFFから00に変更する。このように、本実施例に係るサーバ31では、辞書8bの第一世代の葉および節点の圧縮符号がスクランブルされて、コードと圧縮符号との組合せが変更される。これにより、圧縮されたデータの解読を試みる攻撃者などは、初期化時に辞書8bに登録される複数の種類の文字のコードと圧縮符号との組合せを把握していたとしても、かかる組合せが変更されるため、これらの複数の種類の文字の解読が困難となる。この結果、これらの複数の種類の文字を先頭文字に含む文字列の解読についても困難となる。また、本実施例に係るサーバ31では、辞書8bの圧縮符号をスクランブルするだけで、複雑な暗号化の処理を行わずに、解読が困難な圧縮データが生成される。したがって、本実施例に係るサーバ2によれば、簡易な圧縮処理により難読化を図ることができる。また、処理対象データのサイズ増大に応じた処理コストの増大を抑制することができる。また、本実施例に係るサーバ31によれば、辞書8bの圧縮符号をスクランブルするだけで、データを圧縮するたびに圧縮されたデータおよび生データにスクランブル処理を行っていないので、簡易に圧縮データの難読化を図ることができる。利用者端末32は、入力部10と、出力部11と、送受信部12と、記憶部13と、制御部34とを有する。制御部34は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。図15に示すように、制御部24は、伸張部34aと、変更部34bと、再生部14cとを有する。伸張部34aは、実施例1に係る伸張部14aと同様の処理を行う。すなわち、伸張部34aは、後述の変更部34bにより、文字のコードと圧縮符号との組合せが変更された辞書13bを用いて、デジタルコンテンツのファイルのデータを伸張する。また、伸張部34aは、伸張された文字を含む文字列であって辞書13bに未登録の文字列と、圧縮符号との組合せを新たに辞書13bに登録する。変更部34bは、入力部10から入力されたパスワードに基づいて、文字列と圧縮符号との複数の組合せが登録された辞書13bの文字列と圧縮符号との組合せを変更する。具体例を挙げて説明する。まず、変更部34bは、パスワードを取得する。そして、変更部34bは、パスワードをシードとして、SHA-256などの第一のハッシュ関数を用いて、次の第二のハッシュ関数で用いられる所定長のハッシュ値をシードとして取得する。続いて、変更部34bは、さらに第二のハッシュ関数を用いて、シードからハッシュ値を取得する。このように、第一のハッシュ関数を用いてパスワードからシードを生成するのは、第二のハッシュ関数で用いられるのに十分な所定長のシードを取得するためである。その後、変更部34bは、変更前の圧縮符号として16進数で00の値と、変更後の圧縮符号としてハッシュ値とを対応付けて記憶部13に格納する。次に、変更部34bは、再び、第二のハッシュ関数を用いて、シードからハッシュ値を取得する。そして、変更部34bは、得られたハッシュ値が変更後の圧縮符号として記憶部13に記憶されているか否かを判定する。得られたハッシュ値が変更後の圧縮符号として記憶部13に記憶されている場合には、変更部34bは、次のような処理を行う。すなわち、変更部34bは、否定判定されるまで、得られたハッシュ値を1つインクリメントし、ハッシュ値が変更後の圧縮符号として記憶部13に記憶されているか否かを判定することを繰り返し行う。ハッシュ値が変更後の圧縮符号として記憶部13に記憶されていない場合には、変更部34bは、変更前の圧縮符号として16進数で01の値と、変更後の圧縮符号としてハッシュ値とを対応付けて記憶部13に格納する。変更部34bは、このような処理を、初期化の際に、辞書13bに登録された複数の文字の圧縮符号の分だけ繰り返し行う。例えば、初期化の際に辞書13bに16進数で00からFFまでの256種類の文字の圧縮符号が登録された場合には、変更部34bは、00からFFまでの256個の圧縮符号を変更前の圧縮符号として扱う。そして、変更部34bは、それぞれの変更前の圧縮符号に対して、変更後の圧縮符号を生成し、変更前の圧縮符号と、変更後の圧縮符号とを対応付けて記憶部13に格納する。そして、変更部34bは、初期化した辞書13bに登録された圧縮符号のそれぞれを、対応する変更後の圧縮符号のそれぞれに変更する。このように、本実施例に係る利用者端末32では、入力されたパスワードが、サーバ31で入力された正規のパスワードと一致しない場合には、双方のパスワードから得られるハッシュ値が一致しない限り、伸張されるデータが正規のものとならない。したがって、本実施例に係る利用者端末32によれば、簡易に難読化を図ることができる。制御部34は、ASICApplicationSpecificIntegratedCircuitやFPGAFieldProgrammableGateArrayなどの集積回路を有する。なお、制御部34は、CPUCentralProcessingUnitやMPUMicroProcessingUnitなどの電子回路を有してもよい。[処理の流れ]次に、本実施例に係るサーバ31の処理の流れを説明する。図18は、実施例3に係る圧縮処理の手順を示すフローチャートである。この圧縮処理の実行タイミングとしては様々なタイミングが考えられる。例えば、圧縮処理は、入力部5からデジタルコンテンツが入力された場合に実行されるようにしてもよい。なお、本実施例に係るシステム30の処理の流れは、実施例1に係るシステム1のシーケンス図で示す処理の流れと同様であるので、説明を省略する。図18に示すステップS601~S603は、先の図8に示すステップS201~S203と同様であるので説明を省略する。図18に示すように、変更部33bは、変数iの値に0を設定するステップS604。変更部33bは、パスワードをシードとして、第一のハッシュ関数を用いて、次の第二のハッシュ関数で用いられる所定長のハッシュ値をシードとして取得するステップS605。変更部33bは、疑似乱数を発生させるための関数を用いて、シードから疑似乱数を発生させるステップS606。変更部33bは、疑似乱数が、変更後の圧縮符号として記憶部8に登録されているか否かを判定するステップS607。登録されている場合ステップS607肯定には、変更部33bは、擬似乱数の値を1つインクリメントしステップS608、ステップS607へ戻る。一方、登録されていない場合ステップS607否定には、変更部33bは、処理対象の世代の変更前の圧縮符号としての変数iと、変更後の圧縮符号としての擬似乱数とを対応付けて記憶部8に登録するステップS609。なお、本実施例では、処理対象の世代は、第一世代である。変更部33bは、変数iの値を1つインクリメントするステップS610。変更部33bは、変数iの値が、処理対象の世代の葉および節点の個数Lより大きいか否かを判定するステップS611。変数iの値が、L以下である場合ステップS611否定には、ステップS606へ戻る。一方、変数iの値がLより大きい場合ステップS611肯定には、変更部33bは、初期化した辞書8bに登録された圧縮符号のそれぞれを、対応する変更後の圧縮符号のそれぞれに変更するステップS612。圧縮部33aは、辞書8bを用いて、デジタルコンテンツのファイルのデータを圧縮しつつ、辞書8bを更新しステップS613、処理結果を制御部33の内部メモリに格納し、リターンする。次に、本実施例に係る利用者端末32の処理の流れを説明する。図19は、実施例3に係る伸張処理の手順を示すフローチャートである。伸張処理においても、図18において説明した圧縮処理と共通の辞書更新アルゴリズムを用いる。図19に示すステップS701~S703は、先の図9に示すステップS301~S303と同様であるので説明を省略する。図19に示すように、変更部34bは、変数iの値に0を設定するステップS704。変更部34bは、パスワードをシードとして、第一のハッシュ関数を用いて、次の第二のハッシュ関数で用いられる所定長のハッシュ値をシードとして取得するステップS705。変更部34bは、疑似乱数を発生させるための関数を用いて、シードから疑似乱数を発生させるステップS706。変更部34bは、疑似乱数が、変更後の圧縮符号として記憶部8に登録されているか否かを判定するステップS707。登録されている場合ステップS707肯定には、変更部34bは、擬似乱数の値を1つインクリメントしステップS708、ステップS707へ戻る。一方、登録されていない場合ステップS707否定には、変更部34bは、処理対象の世代の変更前の圧縮符号としての変数iと、変更後の圧縮符号としての擬似乱数とを対応付けて記憶部8に登録するステップS709。なお、本実施例では、処理対象の世代は、第一世代である。変更部34bは、変数iの値を1つインクリメントするステップS710。変更部34bは、変数iの値が、処理対象の世代の葉および節点の個数Lより大きいか否かを判定するステップS711。変数iの値が、L以下である場合ステップS711否定には、ステップS706へ戻る。一方、変数iの値がLより大きい場合ステップS711肯定には、変更部34bは、初期化した辞書8bに登録された圧縮符号のそれぞれを、対応する変更後の圧縮符号のそれぞれに変更するステップS712。伸張部34aは、辞書8bを用いて、デジタルコンテンツのファイルのデータを伸張しつつ、辞書8bを更新しステップS713、処理結果を制御部34の内部メモリに格納し、リターンする。上述してきたように、本実施例に係るサーバ31では、辞書8bの第一世代の葉および節点の圧縮符号がスクランブルされて、コードと圧縮符号との組合せが変更される。これにより、圧縮されたデータの解読を試みる攻撃者などは、初期化時に辞書8bに登録される複数の種類の文字のコードと圧縮符号との組合せを把握していたとしても、かかる組合せが変更されるため、これらの複数の種類の文字の解読が困難となる。この結果、これらの複数の種類の文字を先頭文字に含む文字列の解読についても困難となる。また、本実施例に係るサーバ31では、辞書8bの圧縮符号をスクランブルするだけで、複雑な暗号化の処理を行わずに、解読が困難な圧縮データが生成される。したがって、本実施例に係るサーバ31によれば、簡易な圧縮処理により難読化を図ることができる。また、処理対象データのサイズ増大に応じた処理コストの増大を抑制することができる。また、本実施例に係るサーバ31によれば、辞書8bの圧縮符号をスクランブルするだけで、データを圧縮するたびに圧縮されたデータおよび生データにスクランブル処理を行っていないので、簡易に圧縮データの難読化を図ることができる。また、本実施例に係る利用者端末32では、入力されたパスワードが、サーバ31で入力された正規のパスワードと一致しない場合には、双方のパスワードから得られるハッシュ値が一致しない限り、伸張されるデータが正規のものとならない。したがって、本実施例に係る利用者端末32によれば、簡易に難読化を図ることができる。さて、上記の実施例3では、実施例1、2とは異なる他の方法で、第一世代の文字と圧縮符号との組合せを変更する場合を例示したが、開示の装置はこれに限定されない。そこで、実施例4では、実施例3の方法と同様の方法で、第二世代以降の文字と圧縮符号との組合せも変更する場合について説明する。[システム40の構成例]実施例4に係るシステムについて説明する。図20は、実施例4に係るシステムの構成の一例を示す図である。本実施例に係るシステム40は、サーバ41と、利用者端末42とを有する。サーバ41は、実施例1に係る制御部9に代えて制御部43を有する点が、実施例1と異なる。利用者端末42は、実施例1に係る制御部14に代えて制御部44を有する点が、実施例1と異なる。なお、以下では、上記の実施例1~3と同様の機能を果たす各部や各機器については図1、図10、図15と同様の符号を付し、その説明は省略する場合がある。サーバ41は、辞書や電子書籍などのデジタルコンテンツのファイルのデータを圧縮する。サーバ41は、圧縮されたデジタルコンテンツのファイルのデータを、インターネット4を介して利用者端末42に送信する。利用者端末42は、受信したデジタルコンテンツのファイルのデータを伸張する。利用者端末42は、伸張したデジタルコンテンツのファイルを再生する。サーバ41は、入力部5と、出力部6と、送受信部7と、記憶部8と、制御部43とを有する。制御部43は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。図20に示すように、制御部43は、圧縮部43aと、変更部43bとを有する。圧縮部43aは、実施例1に係る圧縮部9aと同様の処理を行う。すなわち、圧縮部43aは、後述の変更部43bにより、文字のコードと圧縮符号との組合せが変更された辞書8bを用いて、デジタルコンテンツのファイルのデータを圧縮する。また、圧縮部43aは、圧縮された文字列の圧縮前の文字列を含む文字列であって辞書8bに未登録の文字列と、圧縮符号との組合せを新たに辞書8bに登録する。変更部43bは、実施例3に係る変更部33bと同様の処理を行う。さらに、変更部43bは、入力部5から入力されたパスワードに基づいて、辞書8bに新たに登録された文字列と圧縮符号との組合せを新たに変更する。具体例を挙げて説明する。変更部43bは、辞書8bに文字列と圧縮符号との組合せが新たに登録されるたびに、新たに登録された文字列の文字のうち、新規に追加された文字の世代を処理対象の世代として特定する。そして、変更部43bは、実施例3に係る変更部33bが辞書8bに登録された第一世代の文字列と圧縮符号との組合せを変更する方法と同様の方法で、特定した処理対象の世代の文字列と圧縮符号との組合せを変更する。すなわち、変更部43bは、特定した処理対象の世代の圧縮符号のそれぞれを変更前の圧縮符号とし、変更前の圧縮符号ごとに第二のハッシュ関数を用いてシードからハッシュ値を生成する。ここで、変更部43bは、生成されるハッシュ値が、特定した世代に応じた値、例えば、特定した世代が第二世代の場合には、16進数で100以上となるように、ハッシュ値の範囲を調整する。そして、変更部43bは、変更前の圧縮符号のそれぞれと、ハッシュ値のそれぞれとを対応付けて記憶部8に登録する。図21は、実施例4に係るシステムが実行する処理の一例を説明するための図である。図21の例は、辞書8bに未登録の文字列aboutのコードと圧縮符号との組合せが、圧縮部43aにより辞書8bに新たに登録された場合の変更部43bの処理の一例を示す。図21の例では、変更部43bは、文字列aboutの第二世代の文字bの圧縮符号を100から161に変更する。また、図21の例では、変更部43bは、第三世代の文字oの圧縮符号を101から1FFに変更する。また、図21の例では、変更部43bは、第四世代の文字uの圧縮符号を102から100に変更する。また、図21の例では、第五世代の文字tの圧縮符号を103から1B2に変更する。このように、本実施例に係るサーバ41では、辞書8bの第一世代、および、辞書8bに新規に追加された文字の世代の葉および節点の圧縮符号がスクランブルされて、コードと圧縮符号との組合せが変更される。これにより、圧縮されたデータの解読を試みる攻撃者などは、初期化時に辞書8bに登録される複数の種類の文字のコードと圧縮符号との組合せを把握していたとしても、かかる組合せが変更されるため、これらの複数の種類の文字の解読が困難となる。また、本実施例に係るサーバ41では、辞書8bの圧縮符号をスクランブルするだけで、複雑な暗号化の処理を行わずに、解読が困難な圧縮データが生成される。したがって、本実施例に係るサーバ41によれば、簡易な圧縮処理により難読化を図ることができる。また、処理対象データのサイズ増大に応じた処理コストの増大を抑制することができる。また、本実施例に係るサーバ41によれば、辞書8bの圧縮符号をスクランブルするだけで、データを圧縮するたびに圧縮されたデータおよび生データにスクランブル処理を行っていないので、簡易に圧縮データの難読化を図ることができる。利用者端末42は、入力部10と、出力部11と、送受信部12と、記憶部13と、制御部44とを有する。制御部44は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。図20に示すように、制御部44は、伸張部44aと、変更部44bと、再生部14cとを有する。伸張部44aは、実施例1に係る伸張部14aと同様の処理を行う。すなわち、伸張部44aは、後述の変更部44bにより、文字のコードと圧縮符号との組合せが変更された辞書13bを用いて、デジタルコンテンツのファイルのデータを伸張する。また、伸張部44aは、伸張された文字を含む文字列であって辞書13bに未登録の文字列と、圧縮符号との組合せを新たに辞書13bに登録する。変更部44bは、実施例3に係る変更部34bと同様の処理を行う。さらに、変更部44bは、入力部10から入力されたパスワードに基づいて、辞書13bに新たに登録された文字列と圧縮符号との組合せを新たに変更する。具体例を挙げて説明する。変更部44bは、辞書13bに文字列と圧縮符号との組合せが新たに登録されるたびに、新たに登録された文字列の文字のうち、新規に追加された文字の世代を処理対象の世代として特定する。そして、変更部44bは、実施例3に係る変更部34bが辞書13bに登録された第一世代の文字列と圧縮符号との組合せを変更する方法と同様の方法で、特定した処理対象の世代の文字列と圧縮符号との組合せを変更する。すなわち、変更部44bは、特定した処理対象の世代の圧縮符号のそれぞれを変更前の圧縮符号とし、変更前の圧縮符号ごとに第二のハッシュ関数を用いてシードからハッシュ値を生成する。ここで、変更部44bは、生成されるハッシュ値が、特定した世代に応じた値、例えば、特定した世代が第二世代の場合には、16進数で100以上となるように、ハッシュ値の範囲を調整する。そして、変更部44bは、変更前の圧縮符号のそれぞれと、ハッシュ値のそれぞれとを対応付けて記憶部8に登録する。このように、本実施例に係る利用者端末42では、入力されたパスワードが、サーバ41で入力された正規のパスワードと一致しない場合には、双方のパスワードから得られるハッシュ値が一致しない限り、伸張されるデータが正規のものとならない。したがって、本実施例に係る利用者端末42によれば、簡易に難読化を図ることができる。制御部44は、ASICApplicationSpecificIntegratedCircuitやFPGAFieldProgrammableGateArrayなどの集積回路を有する。なお、制御部44は、CPUCentralProcessingUnitやMPUMicroProcessingUnitなどの電子回路を有してもよい。[処理の流れ]次に、本実施例に係るサーバ41の処理の流れを説明する。図22は、実施例4に係る圧縮処理の手順を示すフローチャートである。この圧縮処理の実行タイミングとしては様々なタイミングが考えられる。例えば、圧縮処理は、入力部5からデジタルコンテンツが入力された場合に実行されるようにしてもよい。なお、本実施例に係るシステム40の処理の流れは、実施例1に係るシステム1のシーケンス図で示す処理の流れと同様であるので、説明を省略する。図22に示すステップS801~S812は、先の図18に示すステップS601~S612と同様であるので説明を省略する。図22に示すように、圧縮部43aは、辞書8bを用いて、デジタルコンテンツのファイルのデータを圧縮するステップS813。圧縮部43aは、デジタルコンテンツのファイルのデータが示す文字列のうち、今回圧縮された部分の文字列を先頭部分に含む文字列のコードが、辞書8bに未登録であるか否かを判定するステップS814。未登録である場合ステップS814肯定には、圧縮部43aは、圧縮された文字列の圧縮前の文字列を含む文字列であって辞書8bに未登録の文字列のコードと、圧縮符号との組合せを新たに辞書8bに登録するステップS815。一方、未登録でない場合ステップS814否定には、圧縮部43aは、デジタルコンテンツのファイルのデータのうち、圧縮処理が未処理のデータがあるか否かを判定するステップS820。圧縮処理が未処理のデータがある場合ステップS820肯定には、ステップS813へ戻る。圧縮処理が未処理のデータがない場合ステップS820否定には、圧縮部43aは、処理結果を制御部43の内部メモリに格納し、リターンする。変更部43bは、辞書8bに新たに登録された文字列の文字のうち新規に追加された文字の世代を処理対象の世代として特定し、特定した処理対象の世代のうち、下記のステップS817で未選択の処理対象の世代があるか否かを判定するステップS816。未選択の処理対象の世代がある場合ステップS816肯定には、変更部43bは、未選択の処理対象の世代を1つ選択するステップS817。変更部43bは、選択した処理対象の世代の葉および節点の個数が複数か否かを判定するステップS818。複数である場合ステップS818肯定には、変更部43bは、変数iの値を0に設定するステップS819。そして、変更部43bは、再び擬似乱数を発生させステップS806、疑似乱数が、変更後の圧縮符号として記憶部8に登録されているか否かを判定するステップS807。登録されていない場合ステップS807否定には、変更部43bは、処理対象の世代の変更前の圧縮符号と、変更後の圧縮符号としての擬似乱数とを対応付けて記憶部8に登録するステップS809。一方、未選択の処理対象の世代がない場合ステップS816否定、複数でない場合ステップS818否定には、ステップS820へ進む。次に、本実施例に係る利用者端末42の処理の流れを説明する。図23は、実施例4に係る伸張処理の手順を示すフローチャートである。図23に示すステップS901~S912は、先の図19に示すステップS701~S712と同様であるので説明を省略する。図23に示すように、伸張部44aは、辞書13bを用いて、デジタルコンテンツのファイルのデータを伸張するステップS913。伸張部44aは、デジタルコンテンツのファイルのデータが示す文字列のうち、今回圧縮された部分の文字列を先頭部分に含む文字列のコードが、辞書13bに未登録であるか否かを判定するステップS914。未登録である場合ステップS914肯定には、伸張部44aは、圧縮された文字列の圧縮前の文字列を含む文字列であって辞書13bに未登録の文字列のコードと、圧縮符号との組合せを新たに辞書13bに登録するステップS915。一方、未登録でない場合ステップS914否定には、伸張部44aは、デジタルコンテンツのファイルのデータのうち、圧縮処理が未処理のデータがあるか否かを判定するステップS920。圧縮処理が未処理のデータがある場合ステップS920肯定には、ステップS913へ戻る。圧縮処理が未処理のデータがない場合ステップS920否定には、伸張部44aは、処理結果を制御部44の内部メモリに格納し、リターンする。変更部44bは、辞書13bに新たに登録された文字列の文字のうち新規に追加された文字の世代を処理対象の世代として特定し、特定した処理対象の世代のうち、下記のステップS917で未選択の処理対象の世代があるか否かを判定するステップS916。未選択の処理対象の世代がある場合ステップS916肯定には、変更部44bは、未選択の処理対象の世代を1つ選択するステップS917。変更部44bは、選択した処理対象の世代の葉および節点の個数が複数か否かを判定するステップS918。複数である場合ステップS918肯定には、変更部44bは、変数iの値を0に設定するステップS919。そして、変更部44bは、再び擬似乱数を発生させステップS906、疑似乱数が、変更後の圧縮符号として記憶部13に登録されているか否かを判定するステップS907。登録されていない場合ステップS907否定には、変更部44bは、処理対象の世代の変更前の圧縮符号と、変更後の圧縮符号としての擬似乱数とを対応付けて記憶部13に登録するステップS909。一方、未選択の処理対象の世代がない場合ステップS916否定、複数でない場合ステップS918否定には、ステップS920へ進む。上述してきたように、本実施例に係るサーバ41では、辞書8bの第一世代、および、辞書8bに新たに登録された文字列の文字のうち新規に追加された文字の世代の圧縮符号がスクランブルされて、コードと圧縮符号との組合せが変更される。これにより、圧縮されたデータの解読を試みる攻撃者などは、初期化時に辞書8bに登録される複数の種類の文字のコードと圧縮符号との組合せを把握していたとしても、かかる組合せが変更されるため、これらの複数の種類の文字の解読が困難となる。また、本実施例に係るサーバ41では、辞書8bの圧縮符号をスクランブルするだけで、複雑な暗号化の処理を行わずに、解読が困難な圧縮データが生成される。したがって、本実施例に係るサーバ41によれば、簡易な圧縮処理により難読化を図ることができる。また、本実施例に係るサーバ41によれば、辞書8bの圧縮符号をスクランブルするだけで、データを圧縮するたびに圧縮されたデータおよび生データにスクランブル処理を行っていないので、簡易に圧縮データの難読化を図ることができる。また、処理対象データのサイズ増大に応じた処理コストの増大を抑制することができる。また、本実施例に係る利用者端末42では、入力されたパスワードが、サーバ41で入力された正規のパスワードと一致しない場合には、双方のパスワードから得られるハッシュ値が一致しない限り、伸張されるデータが正規のものとならない。したがって、本実施例に係る利用者端末42によれば、簡易に難読化を図ることができる。さて、上記の実施例1~4では、データを圧縮する圧縮方式として、LZ78の圧縮方式を採用する場合を例示したが、開示の装置はこれに限定されない。そこで、実施例5では、データを圧縮する圧縮方式として、LZ77の圧縮方式を採用する場合について説明する。[システム50の構成例]実施例5に係るシステムについて説明する。図24は、実施例5に係るシステムの構成の一例を示す図である。本実施例に係るシステム50は、サーバ51と、利用者端末52とを有する。サーバ51は、実施例1に係る記憶部8、制御部9に代えて記憶部53、制御部54を有する点が、実施例1と異なる。利用者端末52は、実施例1に係る記憶部13、制御部14に代えて記憶部55、制御部56を有する点が、実施例1と異なる。なお、以下では、上記の実施例1~4と同様の機能を果たす各部や各機器については図1、図10、図15、図20と同様の符号を付し、その説明は省略する場合がある。サーバ51は、辞書や電子書籍などのデジタルコンテンツのファイルのデータを圧縮する。サーバ51は、圧縮されたデジタルコンテンツのファイルのデータを、インターネット4を介して利用者端末52に送信する。利用者端末52は、受信したデジタルコンテンツのファイルのデータを伸張する。利用者端末52は、伸張したデジタルコンテンツのファイルを再生する。サーバ51は、入力部5と、出力部6と、送受信部7と、記憶部53と、制御部54とを有する。記憶部53は、各種情報を記憶する。例えば、記憶部53は、コンテンツDB8a、予約語テーブル53aを記憶する。予約語テーブル53aには、デジタルコンテンツのデータに含まれ、一般的な文字より出現頻度が高いHTMLHyperTextMarkupLanguageのタグ、および出現頻度の高い文字などが登録される。予約語テーブル53aは、後述の圧縮部54bによりデジタルコンテンツのファイルを圧縮する際に用いられる。図25は、予約語テーブルの一例を示す図である。図25の例は、予約語テーブル53aに、N個のタグが登録された場合を示す。図25の例は、予約語テーブル53aの1番目のレコードにHTMLのタグが登録された場合を示す。また、図25の例は、予約語テーブル53aの2番目のレコードにHTMLのタグが登録された場合を示す。図25の例は、予約語テーブル53aのN番目のレコードにHTMLのタグが登録された場合を示す。記憶部53は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部53は、上記の種類の記憶装置に限定されるものではなく、RAMRandomAccessMemory、ROMReadOnlyMemoryであってもよい。制御部54は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。図24に示すように、制御部54は、生成部54aと、圧縮部54bとを有する。生成部54aは、入力部5から入力されたパスワードに応じた文字列を生成する。例えば、生成部54aは、まず、パスワードの各桁の和を算出する。そして、生成部54aは、算出した和を予約語テーブル53aに登録されたタグの数Nで除算した場合の剰余Dを算出する。続いて、生成部54aは、剰余Dの値が示す番号のレコードを起点として、予約語テーブル53aの各レコードに登録されたタグを取得し、取得したタグを連結した文字列を生成する。このようにして、生成部54aは、予約語テーブル53aの登録の順番が変更された予約語を並べた文字列を生成する。図26Aおよび図26Bは、生成部により生成された文字列の一例を示す図である。図26Aの例は、図25の例において、生成部54aにより値が1である剰余Dが算出された場合に、生成部54aが、1番目のレコードを起点として、文字列を生成した場合の一例を示す。すなわち、図26Aの例は、生成部54aが、予約語テーブル53aの1番目、2番目、3番目、、N番目のレコードの各レコードに登録されたタグを取得し、取得したタグを連結した文字列を生成した場合を示す。また、図26Bの例は、図25の例において、生成部54aにより値が1である剰余Dが算出された場合に、生成部54aが、1番目のレコードを起点として、文字列を生成した場合の一例を示す。すなわち、図26Bの例は、生成部54aが、予約語テーブル53aの1番目、N番目、N-1番目、、2番目のレコードの各レコードに登録されたタグを取得し、取得したタグを連結した文字列を生成した場合を示す。圧縮部54bは、生成部54aにより生成された文字列、および圧縮された文字列の圧縮前の文字列を用いて、文字列を圧縮する。具体例を挙げて説明する。図27は、実施例5に係るシステムの処理を説明するための図である。図27の例では、参照部71および符号化部72を有するスライド窓70の先頭に、さらに、文字列を初期化の際に設定するための設定部73が設けられている。圧縮部54bは、生成部54aにより生成された文字列を、設定部73に設定する。ここで、スライド窓70がデータ上をスライドしても、設定部73に設定された文字列は設定されたままとなる。図27の例では、設定部73に文字列が設定された場合が示されている。圧縮部54bは、符号化部72内の先頭のデータを圧縮する場合に、設定部73および参照部71内の最長一致系列の位置、および最長一致系列の長さを示すポインタを生成する。ここで、圧縮部54bは、符号化部72内の先頭のデータと一致する最長のデータを設定部73および参照部71内から検索する。また、圧縮部54bは、ポインタに含まれる最長一致系列の位置として、参照部71の先頭からのアドレスではなく、設定部73に設定された文字列の先頭からのアドレスを用いる。このように、本実施例に係るサーバ51によれば、出現頻度の高い文字やタグなどが初期化時に設定部73に設定されるので、圧縮効率が良くなる。また、本実施例に係るサーバ51では、ポインタが示す最長一致系列の位置は、設定部73に設定された文字列の先頭からのアドレスである。そのため、本実施例に係るサーバ51によれば、圧縮されたデータの解読を試みる攻撃者などが、ポインタが示す最長一致系列の位置を参照部71の先頭からのアドレスと把握している場合には、攻撃者による圧縮データの解読の困難性を高めることができる。また、本実施例に係るサーバ51では、設定部73に文字列を設定し、ポインタが示す最長一致系列の位置を設定部73に設定された文字列の先頭からのアドレスとするという、RSAなどの暗号化処理と比較すると、簡易な処理で圧縮符号がスクランブルされる。このように、本実施例に係るサーバ51は、複雑な暗号化の処理を行わずに、解読が困難な圧縮データを生成する。したがって、本実施例に係るサーバ51によれば、簡易に圧縮データの難読化を図ることができる。また、処理対象データのサイズ増大に応じた処理コストの増大を抑制することができる。また、本実施例に係るサーバ51では、ポインタが示す最長一致系列の位置を設定部73に設定された文字列の先頭からのアドレスとするだけで、データを圧縮するたびに圧縮されたデータおよび生データにスクランブル処理を行っていない。そのため、本実施例に係るサーバ51によれば、簡易に圧縮データの難読化を図ることができる。利用者端末52は、入力部10と、出力部11と、送受信部12と、記憶部55と、制御部56とを有する。記憶部55は、各種情報を記憶する。例えば、記憶部55は、コンテンツDB8a、予約語テーブル55aを記憶する。予約語テーブル55aは、上述した予約語テーブル53aと同様のテーブルであるので、説明を省略する。記憶部55は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部55は、上記の種類の記憶装置に限定されるものではなく、RAMRandomAccessMemory、ROMReadOnlyMemoryであってもよい。制御部56は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。図24に示すように、制御部56は、生成部56aと、伸張部56bと、再生部14cとを有する。生成部56aは、上述した生成部54aと同様の処理を行う。すなわち、生成部56aは、入力部10から入力されたパスワードに応じた文字列を生成する。例えば、生成部56aは、まず、パスワードの各桁の和を算出する。そして、生成部56aは、算出した和を予約語テーブル55aに登録されたタグの数Nで除算した場合の剰余Dを算出する。続いて、生成部56aは、剰余Dの値が示す番号のレコードを起点として、予約語テーブル55aの各レコードに登録されたタグを取得し、取得したタグを連結した文字列を生成する。伸張部56bは、生成部56aにより生成された文字列、および伸張された文字列を用いて、圧縮された文字列を伸張する。具体例を挙げて説明する。伸張部56bは、生成部56aにより生成された文字列を、設定部73に設定する。ここで、スライド窓70がデータ上をスライドしても、設定部73に設定された文字列は設定されたままとなる。伸張部56bは、符号化部72内のポインタを伸張する場合に、ポインタが示す設定部73に設定された文字列の先頭からのアドレスが示す文字を特定する。そして、伸張部56bは、特定した文字から、ポインタが示す長さ分の文字列を設定部73および参照部71内の文字列から取得し、伸張バッファに格納することで伸張を行う。なお、伸張部56bは、符号化部72内の伸張対象のデータの先頭ビットが0である場合には、生データであり、先頭ビットが1である場合には、ポインタであると判定できる。そして、伸張部56bは、符号化部72内の伸張対象のデータが生データである場合には、生データを伸張バッファに格納する。また、伸張部56bは、符号化部72内の伸張対象のデータがポインタである場合には、ポインタが示す文字列を設定部73および参照部71内の文字列から取得し、伸張バッファに格納する。このように、本実施例に係る利用者端末52では、入力されたパスワードが、サーバ51で入力された正規のパスワードと一致しない場合には、双方のパスワードから得られる剰余Dが一致しない限り、伸張されるデータが正規のものとならない。したがって、本実施例に係る利用者端末52によれば、簡易に難読化を図ることができる。制御部56は、ASICApplicationSpecificIntegratedCircuitやFPGAFieldProgrammableGateArrayなどの集積回路を有する。なお、制御部56は、CPUCentralProcessingUnitやMPUMicroProcessingUnitなどの電子回路を有してもよい。[処理の流れ]次に、本実施例に係るサーバ51の処理の流れを説明する。図28は、実施例5に係る圧縮処理の手順を示すフローチャートである。この圧縮処理の実行タイミングとしては様々なタイミングが考えられる。例えば、圧縮処理は、入力部5からデジタルコンテンツが入力された場合に実行されるようにしてもよい。なお、本実施例に係るシステム50の処理の流れは、実施例1に係るシステム1のシーケンス図で示す処理の流れと同様であるので、説明を省略する。図28に示すように、圧縮部54bは、デジタルコンテンツのファイルを取得するステップS1001。生成部54aは、入力部5からパスワードが入力されたか否かを判定するステップS1002。パスワードが入力されていない場合ステップS1002否定には、生成部54aは、再びステップS1002で、入力部5からパスワードが入力されたか否かを判定する。一方、パスワードが入力された場合ステップS1002肯定には、生成部54aは、算出した和を、登録されたタグの数Nで除算した場合の剰余Dを算出し、次のような処理を行う。すなわち、生成部54aは、剰余Dの値が示す番号のレコードを起点として、予約語テーブル53aの各レコードに登録されたタグを取得し、取得したタグを連結した文字列を生成するステップS1003。これにより、予約語テーブル53aの登録の順番が変更された予約語を並べた文字列が生成される。圧縮部54bは、生成部54aにより生成された文字列を、設定部73に設定するステップS1004。圧縮部54bは、デジタルコンテンツのファイルのデータを圧縮しつつ、スライド窓70をスライドさせて参照部71内のデータを更新することで辞書を更新しステップS1005、処理結果を制御部54の内部メモリに格納し、リターンする。次に、本実施例に係る利用者端末52の処理の流れを説明する。図29は、実施例5に係る伸張処理の手順を示すフローチャートである。伸張処理においても、図28において説明した圧縮処理と共通の辞書更新アルゴリズムを用いる。図29に示すように、伸張部56bは、デジタルコンテンツの圧縮ファイルを取得するステップS1101。生成部56aは、入力部10からパスワードが入力されたか否かを判定するステップS1102。パスワードが入力されていない場合ステップS1102否定には、生成部56aは、再びステップS1102で、入力部10からパスワードが入力されたか否かを判定する。一方、パスワードが入力された場合ステップS1102肯定には、生成部56aは、算出した和を、登録されたタグの数Nで除算した場合の剰余Dを算出し、次のような処理を行う。すなわち、生成部56aは、剰余Dの値が示す番号のレコードを起点として、予約語テーブル55aの各レコードに登録されたタグを取得し、取得したタグを連結した文字列を生成するステップS1103。これにより、予約語テーブル55aの登録の順番が変更された予約語を並べた文字列が生成される。伸張部56bは、生成部56aにより生成された文字列を、設定部73に設定するステップS1104。伸張部56bは、デジタルコンテンツの圧縮ファイルのデータを伸張しつつ、スライド窓70をスライドさせて参照部71内のデータを更新することで辞書を更新しステップS1105、処理結果を制御部56の内部メモリに格納し、リターンする。上述してきたように、本実施例に係るサーバ51によれば、出現頻度の高い文字やタグなどが初期化時に設定部73に設定されるので、圧縮効率が良くなる。また、本実施例に係るサーバ51では、ポインタが示す最長一致系列の位置は、設定部73に設定された文字列の先頭からのアドレスである。そのため、本実施例に係るサーバ51によれば、圧縮されたデータの解読を試みる攻撃者などが、ポインタが示す最長一致系列の位置を参照部71の先頭からのアドレスと把握している場合には、攻撃者による圧縮データの解読の困難性を高めることができる。また、本実施例に係るサーバ51では、設定部73に文字列を設定し、ポインタが示す最長一致系列の位置を設定部73に設定された文字列の先頭からのアドレスとするという、RSAなどの暗号化処理と比較すると、簡易な処理で圧縮符号がスクランブルされる。このように、本実施例に係るサーバ51は、複雑な暗号化の処理を行わずに、解読が困難な圧縮データを生成する。したがって、本実施例に係るサーバ51によれば、簡易に圧縮データの難読化を図ることができる。また、処理対象データのサイズ増大に応じた処理コストの増大を抑制することができる。また、本実施例に係るサーバ51では、ポインタが示す最長一致系列の位置を設定部73に設定された文字列の先頭からのアドレスとするだけで、データを圧縮するたびに圧縮されたデータおよび生データにスクランブル処理を行っていない。そのため、本実施例に係るサーバ51によれば、簡易に圧縮データの難読化を図ることができる。また、本実施例に係る利用者端末52では、入力されたパスワードが、サーバ51で入力された正規のパスワードと一致しない場合には、双方のパスワードから得られる剰余Dが一致しない限り、伸張されるデータが正規のものとならない。したがって、本実施例に係る利用者端末52によれば、簡易に難読化を図ることができる。さて、上記の実施例5では、LZ77の圧縮方式を採用する場合を例示したが、開示の装置はこれに限定されない。そこで、実施例6では、データを圧縮する圧縮方式として、ハフマン符号を採用する場合について説明する。[システム60の構成例]実施例6に係るシステムについて説明する。図30は、実施例6に係るシステムの構成の一例を示す図である。本実施例に係るシステム60は、サーバ61と、利用者端末62とを有する。サーバ61は、実施例1に係る記憶部8、制御部9に代えて記憶部63、制御部64を有する点が、実施例1と異なる。利用者端末62は、実施例1に係る記憶部13、制御部14に代えて記憶部65、制御部66を有する点が、実施例1と異なる。なお、以下では、上記の実施例1~5と同様の機能を果たす各部や各機器については図1、図10、図15、図20、図24と同様の符号を付し、その説明は省略する場合がある。サーバ61は、辞書や電子書籍などのデジタルコンテンツのファイルのデータを圧縮する。サーバ61は、圧縮されたデジタルコンテンツのファイルのデータに、暗号化された後述の頻度データ63aを付加して、インターネット4を介して利用者端末62に送信する。利用者端末62は、受信した頻度データ63aを復号化し、受信したデジタルコンテンツのファイルのデータを伸張する。利用者端末62は、伸張したデジタルコンテンツのファイルを再生する。サーバ61は、入力部5と、出力部6と、送受信部7と、記憶部63と、制御部64とを有する。記憶部63は、各種情報を記憶する。例えば、記憶部63は、コンテンツDB8a、頻度データ63a、辞書63bを記憶する。頻度データ63aは、全文字に対する各文字の出現頻度が登録されたデータである。頻度データ63aは、後述の生成部64aにより生成され、記憶部63に格納される。辞書63bは、ハフマン木で表される辞書である。辞書63bには、文字のコードと圧縮符号との組合せが後述の圧縮部64bにより登録される。図31Aは、ハフマン木で表される辞書の一例を示す図である。図31Aの例は、文字eのコードと、圧縮符号00との組合せが辞書に登録された場合を示す。また、図31Aの例は、文字dのコードと、圧縮符号01との組合せが辞書に登録された場合を示す。また、図31Aの例は、文字cのコードと、圧縮符号100との組合せが辞書に登録された場合を示す。また、図31Aの例は、文字bのコードと、圧縮符号110との組合せが辞書に登録された場合を示す。また、図31Aの例は、文字aのコードと、圧縮符号111との組合せが辞書に登録された場合を示す。記憶部63は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部63は、上記の種類の記憶装置に限定されるものではなく、RAMRandomAccessMemory、ROMReadOnlyMemoryであってもよい。制御部64は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。図30に示すように、制御部64は、生成部64aと、圧縮部64bと、変更部64cとを有する。生成部64aは、入力部5から入力されたデジタルコンテンツのファイル中に含まれる各文字の個数を計数する。そして、生成部64aは、全文字の個数に対する各文字の個数を算出する。続いて、生成部64aは、算出した全文字の個数に対する各文字の個数を示す頻度データ63aをRSAなどの暗号化アルゴリズムを用いて暗号化し、暗号化した頻度データ63を記憶部63に格納する。圧縮部64bは、頻度データ63aを用いて、ハフマン木で表される辞書63bを生成し、生成した辞書63bを記憶部63に格納する。そして、圧縮部64bは、後述の変更部64cにより文字列と圧縮符号との組合せが変更された辞書63bを用いて、ハフマン符号により、デジタルコンテンツのファイルを圧縮する。そして、圧縮部64bは、圧縮したデジタルコンテンツのファイルをデジタルコンテンツごとにコンテンツDB8aに登録する。また、圧縮部64bは、デジタルコンテンツのファイルの送信要求を受信すると、デジタルコンテンツのファイルをコンテンツDB8aから取得し、記憶部63から頻度データ63aを取得し、取得したファイルに頻度データ63aを付加して送受信部7に送信する。変更部64cは、辞書63bに登録された複数の圧縮符号について、同一の圧縮符号長の圧縮符号どうしをグループ化する。図31Aの例では、変更部64cは、圧縮符号長が同一の文字eとdを同じグループとする。また、図31Aの例では、変更部64cは、圧縮符号長が同一の文字cとbとaとを同じグループとする。そして、変更部64cは、入力部5から入力されたパスワードを用いて、実施例1に係る変更部9bが実行する所定の範囲内での圧縮符号の変更方法と同様の方法で、剰余Sを算出するなどして、同一のグループ内で圧縮符号を変更する。そして、変更部64cは、全グループで、圧縮符号を変更する。図31Bは、図31Aの例が示す辞書が変更された場合の一例を示す図である。図31Bの例では、文字eの圧縮符号が00から01に変更された場合が示されている。また、図31Bの例では、文字dの圧縮符号が01から00に変更された場合が示されている。また、図31Bの例では、文字cの圧縮符号が100から111に変更された場合が示されている。また、図31Bの例では、文字bの圧縮符号が110から100に変更された場合が示されている。また、図31Bの例では、文字aの圧縮符号が111から110に変更された場合が示されている。このようにして、変更部64cは、辞書63bに登録された文字のコードと、圧縮符号との組合せを変更する。上述してきたように、本実施例に係るサーバ61では、辞書63bの圧縮符号がスクランブルされて、コードと圧縮符号との組合せが変更される。これにより、圧縮されたデータの解読を試みる攻撃者などは、不正行為などによって変更される前のコードと圧縮符号との組合せを把握していたとしても、かかる組合せが変更されるため、複数の種類の文字の解読が困難となる。また、本実施例に係るサーバ61では、辞書63bの圧縮符号をスクランブルするだけで、複雑な暗号化の処理を行わずに、解読が困難な圧縮データが生成される。したがって、本実施例に係るサーバ61によれば、簡易な圧縮処理により難読化を図ることができる。また、処理対象データのサイズ増大に応じた処理コストの増大を抑制することができる。また、本実施例に係るサーバ61によれば、辞書63bの圧縮符号をスクランブルするだけで、データを圧縮するたびに圧縮されたデータおよび生データにスクランブル処理を行っていないので、簡易に圧縮データの難読化を図ることができる。利用者端末62は、入力部10と、出力部11と、送受信部12と、記憶部65と、制御部66とを有する。記憶部65は、各種情報を記憶する。例えば、記憶部65は、コンテンツDB8a、頻度データ65a、辞書65bを記憶する。頻度データ65aは、後述の生成部66aにより、サーバ61から送信された頻度データ63aが復号化されたデータである。頻度データ65aは、生成部66aにより、記憶部65に格納される。辞書65bは、上述した辞書63bと同様に、ハフマン木で表される辞書である。辞書65bには、文字のコードと圧縮符号との組合せが後述の圧縮部66bにより登録される。記憶部65は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部65は、上記の種類の記憶装置に限定されるものではなく、RAMRandomAccessMemory、ROMReadOnlyMemoryであってもよい。制御部66は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。図30に示すように、制御部66は、生成部66aと、伸張部66bと、変更部66cと、再生部14cとを有する。生成部66aは、サーバ61から送信されたデジタルコンテンツのファイルに付加された頻度データ63aを取得する。生成部66aは、サーバ2での暗号化に用いられた暗号化アルゴリズムを用いて、取得した頻度データ63aを復号化する。そして、生成部66aは、復号化した頻度データ65aを記憶部65に格納する。伸張部66bは、頻度データ65aを用いて、ハフマン木で表される辞書65bを生成し、生成した辞書65bを記憶部65に格納する。そして、伸張部66bは、後述の変更部66cにより文字列と伸張符号との組合せが変更された辞書65bを用いて、ハフマン符号により、デジタルコンテンツのファイルを伸張する。そして、伸張部66bは、伸張したデジタルコンテンツのファイルをデジタルコンテンツごとにコンテンツDB8aに登録する。変更部66cは、辞書65bに登録された複数の圧縮符号について、同一の圧縮符号長の圧縮符号どうしをグループ化する。そして、変更部66cは、入力部10から入力されたパスワードを用いて、実施例1に係る変更部9bが実行する所定の範囲内での圧縮符号の変更方法と同様の方法で、剰余Sを算出するなどして、同一のグループ内で圧縮符号を変更する。そして、変更部66cは、全グループで、圧縮符号を変更することで、辞書65bに登録された文字のコードと、圧縮符号との組合せを変更する。このように、本実施例に係る利用者端末62では、入力されたパスワードが、サーバ61で入力された正規のパスワードと一致しない場合には、双方のパスワードから得られる剰余Sなどが一致しない限り、伸張されるデータが正規のものとならない。したがって、本実施例に係る利用者端末62によれば、簡易に難読化を図ることができる。制御部66は、ASICApplicationSpecificIntegratedCircuitやFPGAFieldProgrammableGateArrayなどの集積回路を有する。なお、制御部66は、CPUCentralProcessingUnitやMPUMicroProcessingUnitなどの電子回路を有してもよい。[処理の流れ]次に、本実施例に係るサーバ61の処理の流れを説明する。図32は、実施例6に係る圧縮処理の手順を示すフローチャートである。この圧縮処理の実行タイミングとしては様々なタイミングが考えられる。例えば、圧縮処理は、入力部5からデジタルコンテンツが入力された場合に実行されるようにしてもよい。なお、本実施例に係るシステム60の処理の流れは、実施例1に係るシステム1のシーケンス図で示す処理の流れと同様であるので、説明を省略する。図32に示すように、圧縮部64bは、頻度データ63aを用いて、ハフマン木で表される辞書63bを生成し、生成した辞書63bを記憶部63に格納するステップS1201。圧縮部64bは、デジタルコンテンツのファイルを取得するステップS1202。変更部64cは、入力部5からパスワードが入力されたか否かを判定するステップS1203。パスワードが入力されていない場合ステップS1203否定には、変更部64cは、再びステップS1203で、入力部5からパスワードが入力されたか否かを判定する。一方、パスワードが入力された場合ステップS1203肯定には、変更部64cは、辞書63bに登録された複数の圧縮符号について、同一の圧縮符号長の圧縮符号どうしをグループ化し、全グループのそれぞれで、圧縮符号を変更するステップS1204。圧縮部64bは、辞書63bを用いて、デジタルコンテンツのファイルのデータを圧縮しステップS1205、処理結果を制御部64の内部メモリに格納し、リターンする。次に、本実施例に係る利用者端末62の処理の流れを説明する。図33は、実施例6に係る伸張処理の手順を示すフローチャートである。図33に示すように、伸張部66bは、頻度データ65aを用いて、ハフマン木で表される辞書65bを生成し、生成した辞書65bを記憶部65に格納するステップS1301。伸張部66bは、デジタルコンテンツのファイルを取得するステップS1302。変更部66cは、入力部10からパスワードが入力されたか否かを判定するステップS1303。パスワードが入力されていない場合ステップS1303否定には、変更部66cは、再びステップS1303で、入力部10からパスワードが入力されたか否かを判定する。一方、パスワードが入力された場合ステップS1303肯定には、変更部66cは、辞書65bに登録された複数の圧縮符号について、同一の圧縮符号長の圧縮符号どうしをグループ化し、全グループのそれぞれで、圧縮符号を変更するステップS1304。伸張部66bは、辞書65bを用いて、デジタルコンテンツのファイルのデータを伸張しステップS1305、処理結果を制御部66の内部メモリに格納し、リターンする。上述してきたように、本実施例に係るサーバ61では、辞書63bの圧縮符号がスクランブルされて、コードと圧縮符号との組合せが変更される。これにより、圧縮されたデータの解読を試みる攻撃者などは、不正行為などによって変更される前のコードと圧縮符号との組合せを把握していたとしても、かかる組合せが変更されるため、複数の種類の文字の解読が困難となる。また、本実施例に係るサーバ61では、辞書63bの圧縮符号をスクランブルするだけで、複雑な暗号化の処理を行わずに、解読が困難な圧縮データが生成される。したがって、本実施例に係るサーバ61によれば、簡易な圧縮処理により難読化を図ることができる。また、処理対象データのサイズ増大に応じた処理コストの増大を抑制することができる。また、本実施例に係るサーバ61によれば、辞書63bの圧縮符号をスクランブルするだけで、データを圧縮するたびに圧縮されたデータおよび生データにスクランブル処理を行っていないので、簡易に圧縮データの難読化を図ることができる。また、本実施例に係る利用者端末62では、入力されたパスワードが、サーバ61で入力された正規のパスワードと一致しない場合には、双方のパスワードから得られる剰余Sなどが一致しない限り、伸張されるデータが正規のものとならない。したがって、本実施例に係る利用者端末62によれば、簡易に難読化を図ることができる。さて、これまで開示の装置に関する実施例について説明した。上述したように、各実施例におけるサーバと利用者端末とでは、共通の辞書更新アルゴリズムが用いられる。また、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。たとえば、実施例1~6において説明した処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。また、実施例1~6において説明した処理のうち、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理を任意に細かくわけたり、あるいはまとめたりすることができる。また、ステップを省略することもできる。また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理の順番を変更できる。例えば、ステップS1201での処理を行う前に、ステップS1202での処理を行うこともできる。また、ステップS1301での処理を行う前に、ステップS1302での処理を行うこともできる。また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散統合して構成することができる。[圧縮プログラム、伸張プログラム]また、上記の実施例1~6で説明した利用者端末の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図34を用いて、上記の実施例で説明したサーバと同様の機能を有する圧縮プログラムを実行するコンピュータの一例を説明する。また、図35を用いて、上記の実施例で説明した利用者端末と同様の機能を有する伸張プログラムを実行するコンピュータの一例を説明する。図34は、圧縮プログラムを実行するコンピュータを示す図である。図34に示すように、コンピュータ300は、CPUCentralProcessingUnit310、ROMReadOnlyMemory320、HDDHardDiskDrive330、RAMRandomAccessMemory340を有する。また、コンピュータ300は、入力装置350、出力装置360、インターネット4に接続された通信インタフェース370を有する。これら310~370の各部は、バス380を介して接続される。入力装置350は、各種の入力デバイスを含み、例えば、キーボードやマウスを含む。入力装置350は、各実施例のサーバが有する入力部5に対応する。出力装置360は、各種の出力デバイスを含み、例えば、液晶ディスプレイを含む。出力装置360は、各実施例のサーバが有する出力部6に対応する。通信インタフェース370は、各実施例のサーバが有する送受信部7に対応する。ROM320には、上記の実施例で示す圧縮部、変更部、生成部と同様の機能を発揮する圧縮プログラム320aが予め記憶される。なお、圧縮プログラム320aについては、適宜分離しても良い。そして、CPU310が、圧縮プログラム320aをROM320から読み出して実行する。そして、HDD330には、コンテンツDB、辞書、予約語テーブル、頻度データが設けられる。これらのうち、コンテンツDB、辞書、予約語テーブルのそれぞれは、コンテンツDB8a、辞書8b,63b、予約語テーブル53aのそれぞれに対応する。また、頻度データは、頻度データ63aに対応する。そして、CPU310は、コンテンツDB、辞書、予約語テーブル、頻度データを読み出してRAM340に格納する。さらに、CPU310は、RAM340に格納されたコンテンツDB、辞書、予約語テーブル、頻度データを用いて、圧縮プログラムを実行する。なお、RAM340に格納される各データは、常に全てのデータがRAM340に格納される必要はなく、処理に必要なデータのみがRAM340に格納されれば良い。図35は、伸張プログラムを実行するコンピュータを示す図である。図35に示すように、コンピュータ400は、CPU410、ROM420、HDD430、RAM440を有する。また、コンピュータ400は、入力装置450、出力装置460、インターネット4に接続された通信インタフェース470を有する。これら410~470の各部は、バス380を介して接続される。入力装置450は、各種の入力デバイスを含み、例えば、キーボードやマウスを含む。入力装置450は、各実施例の利用者端末が有する入力部10に対応する。出力装置460は、各種の出力デバイスを含み、例えば、液晶ディスプレイを含む。出力装置460は、各実施例の利用者端末が有する出力部11に対応する。通信インタフェース470は、各実施例のサーバが有する送受信部12に対応する。ROM420には、上記の実施例で示す生成部、伸張部、変更部と同様の機能を発揮する伸張プログラム420aが予め記憶される。なお、伸張プログラム420aについては、適宜分離しても良い。そして、CPU410が、伸張プログラム420aをROM420から読み出して実行する。そして、HDD430には、コンテンツDB、辞書、予約語テーブル、頻度データが設けられる。これらのうち、コンテンツDB、辞書、予約語テーブルのそれぞれは、コンテンツDB13a、辞書13b,65b、予約語テーブル55aのそれぞれに対応する。また、頻度データは、頻度データ65aに対応する。そして、CPU410は、コンテンツDB、辞書、予約語テーブル、頻度データを読み出してRAM440に格納する。さらに、CPU410は、RAM440に格納されたコンテンツDB、辞書、予約語テーブル、頻度データを用いて、伸張プログラムを実行する。なお、RAM440に格納される各データは、常に全てのデータがRAM440に格納される必要はなく、処理に必要なデータのみがRAM440に格納されれば良い。なお、上記した圧縮プログラム、伸張プログラムについては、必ずしも最初からROMに記憶させておく必要はない。例えば、コンピュータに挿入されるフレキシブルディスクFD、CD-ROM、DVDディスク、光磁気ディスク、ICカードなどの可搬用の物理媒体にプログラムを記憶させておく。そして、コンピュータがこれらからプログラムを読み出して実行するようにしてもよい。さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータに接続される他のコンピュータまたはサーバなどにプログラムを記憶させておく。そして、コンピュータがこれらからプログラムを読み出して実行するようにしてもよい。"