今日のPythonPython中心に、日々発生する疑問点や解決策を記録していきます。内容が間違っていたらゴメンね。このブログは目次を用意しています。記事をお探しの際は、ご利用ください。暗号化フィールドの設定方法を説明します。プラグインを作成しました。次のリンクからダウンロード可能です。CRYPT_AESダウンロードしたファイルを、プラグインとしてアプリケーションに登録すれば利用可能です。暗号化というと、バリデータでの設定によるハッシュ化を思い浮かべるのではないだろうか。format='%(name)s')table.password.requires=CRYPT()モデル定義(db.py)で、userテーブルの定義を行なっている。この中の6行目では、passwordフィールドにCRYPT()を指定し、バリデータを設定している。ハッシュ値に変換しデータベースに格納する。なく次のように、HMACによるハッシュ値を算出するように設定することが多い。table.password.requires=CRYPT(key=Auth.get_or_create_key())もしくは、table.password.requires=CRYPT(key=auth.settings.hmac_key)ハッシュ化は元の値を復元できないため、安全性が高い。用途としてはパスワードの照合など、入力値をハッシュ化して値と比較するなどに使われる。元の値を復元できる暗号化を行い、暗号をデータベースに格納したいことがある。システムのユーザIDとパスワードを暗号化して保存し、必要な時に復元し利用する場合などだ。このような場合、どうすればよいだろうか?。暗号化はweb2pyは標準では対応していない。次のように、多少の設定を行えば利用できる。暗号化したデータベースを利用するには、二通りの方法がある。一つは暗号化に対応したデータベース管理システムを使用することだ。データベースの暗号化機能を提供している。これらを利用すればパフォーマンスなどの利点も多い。データベース固有の機能を利用するためデータベースパッケージに依存する、暗号化機能を提供していないデータベースでは利用できない、など不利な点がある。暗号化のもう一つの方法は、web2pyでデータを暗号化した後にデータベースに格納する方法である。これはハッシュ化と同様にバリデータで設定することで実現する。今回はこの方法での設定方法を説明していくが、実は次の元ネタがある。web2py?元ネタのコードは、若干おかしく正常に動作しない。いうパッケージを使っている。コマンドではインストールできないが、各OS向けのインストーラをダウンロードして実行すればインストール可能だ。ないため、一部環境では動作しない。コマンドでインストール可能だが、コンパイラー環境が整っていないとエラーで止まるようだ。環境を整えてもよいが開発環境だけの話なら、コンパイル済みのバイナリーを幾つかのサイトで配布しているので、これらを使ってもよい。Engine(GAE)では環境に含まれているため、設定するだけで利用可能となる(設定方法は、後ほど説明します)。開発用マシンにインストールする。管理画面を開き、アプリケーションに新しいモジュール(Modules)を追加する。使用し、web2py用のバリデータクラスを定義する。keyこのソースは、こちらのサイトからもダウンロードできる。ファイルをダウンロードした後にweb2py管理画面で、ダウンロードファイルを指定して「アップロード」すれば、簡単にモジュールをアプリケーションに追加可能だ。crypt_aes次に、バリデータクラスの使い方を説明する。クラスのインスタンスを指定すればよい。