ホームページ  >  記事  >  バックエンド開発  >  PHP可逆暗号化・復号化関数サンプルコード

PHP可逆暗号化・復号化関数サンプルコード

怪我咯
怪我咯オリジナル
2017-07-13 10:12:421689ブラウズ

ほとんどのパスワード暗号化には、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(&#39;des&#39;, &#39;ecb&#39;); 
$pad = ord($str[($len = strlen($str)) - 1]); 
if ($pad && $pad < $block && preg_match(&#39;/&#39; . chr($pad) . &#39;{&#39; . $pad . &#39;}$/&#39;, $str)) { 
$str = substr($str, 0, strlen($str) - $pad); 
} 
return unserialize($str); 
}

関数の呼び出し

$key = &#39;okyo.cn&#39;; 
$data = array(&#39;id&#39; => 100, &#39;username&#39; => &#39;customer&#39;, &#39;password&#39; => &#39;e10adc3949ba59abbe56e057f20f883e&#39;); 
$snarr = serialize($data); 
$en = encrypt($data, $key); 
$de = decrypt($en, $key); 
echo "加密原型:"; 
print_r($data); 
echo " 
密钥:$key 
加密结果:$en 

解密结果:"; 
print_r($de);

以上がPHP可逆暗号化・復号化関数サンプルコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。