PHPで暗号化

パスワードをデータベースに保存する場合、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 パッケージが必要なのでインストールしておくこと。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください