パスワードをデータベースに保存する場合、MD5などの不可逆暗号を用いた方がセキュリティー上好ましい。
パスワードは再度入力されるものなので、暗号化した結果を比較すればよい。
それでは、口座番号などの個人情報をデータベースに保存する場合はどうだろう。
これは再度入力される性質のものではなく、保存しておく性質のものだ。
必要な時には表示させたい。
このようなときには Blowfish などの可逆暗号化を行う。
以下のような関数を準備しておけば便利だ。
function encrypt( $key, $text ) { srand() ; $iv_size = mcrypt_get_iv_size( MCRYPT_BLOWFISH, MCRYPT_MODE_CBC ) ; $iv = mcrypt_create_iv( $iv_size, MCRYPT_RAND ) ; return base64_encode( $iv . mcrypt_encrypt( MCRYPT_BLOWFISH, $key, $text, MCRYPT_MODE_CBC, $iv ) ) ; } function decrypt( $key, $base64 ) { $iv_encrypt = base64_decode( $base64 ) ; $iv_size = mcrypt_get_iv_size( MCRYPT_BLOWFISH, MCRYPT_MODE_CBC ) ; $iv = substr( $iv_encrypt, 0, $iv_size ) ; $encrypt = substr( $iv_encrypt, $iv_size ) ; return rtrim( mcrypt_decrypt( MCRYPT_BLOWFISH, $key, $encrypt, MCRYPT_MODE_CBC, $iv ), " " ) ; }
CentOS 5 では、php-mcrypt パッケージが必要なのでインストールしておくこと。