ホームページ >バックエンド開発 >PHPチュートリアル >PHP可逆暗号化・復号化関数サンプルコード
ほとんどのパスワード暗号化には、md5、sha1、その他の方法を使用できます。
データ漏洩を効果的に防ぐことができますが、これらの方法は復元を必要としないデータ暗号化にのみ適しています。
復元する必要がある情報については、可逆的な暗号化および復号化アルゴリズムを使用する必要があります。
多くのプロジェクトメンバーシップシステムでは、Cookieを介して機能を実装する場合、顧客情報をCookieに直接保存する必要があるため、セキュリティの隠れたリスクが必然的に発生します。可逆暗号化後に Cookie に保存すると比較的安全です
関数のソースコード
function encrypt($data, $key) { $prep_code = serialize($data); $block = mcrypt_get_block_size('des', 'ecb'); if (($pad = $block - (strlen($prep_code) % $block)) < $block) { $prep_code .= str_repeat(chr($pad), $pad); } $encrypt = mcrypt_encrypt(MCRYPT_DES, $key, $prep_code, MCRYPT_MODE_ECB); return base64_encode($encrypt); } function decrypt($str, $key) { $str = base64_decode($str); $str = mcrypt_decrypt(MCRYPT_DES, $key, $str, MCRYPT_MODE_ECB); $block = mcrypt_get_block_size('des', 'ecb'); $pad = ord($str[($len = strlen($str)) - 1]); if ($pad && $pad < $block && preg_match('/' . chr($pad) . '{' . $pad . '}$/', $str)) { $str = substr($str, 0, strlen($str) - $pad); } return unserialize($str); }
関数の呼び出し
$key = 'okyo.cn'; $data = array('id' => 100, 'username' => 'customer', 'password' => 'e10adc3949ba59abbe56e057f20f883e'); $snarr = serialize($data); $en = encrypt($data, $key); $de = decrypt($en, $key); echo "加密原型:"; print_r($data); echo " 密钥:$key 加密结果:$en 解密结果:"; print_r($de);
以上がPHP可逆暗号化・復号化関数サンプルコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。