PHP實現(xiàn)加強版加密解密類實例
更新時間:2015年07月29日 10:57:58 作者:DDIAN
這篇文章主要介紹了PHP實現(xiàn)加強版加密解密類,實例分析了php加密解密的相關(guān)實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
本文實例講述了PHP實現(xiàn)加強版加密解密類。分享給大家供大家參考。具體如下:
<?php
class Ender{
private $enkey;//加密解密用的密鑰
private $rep_char='#';
//替換加密后的base64字符串中的=,因為=在有些場合是禁止使用的,
//這里可以用一個允許的字符作為替換。
//構(gòu)造參數(shù)是密鑰
public function __construct($key=''){
if(!$key){
$this->enkey=$key;
}
}
//設(shè)置密鑰http://blog.ddian.cn
public function set_key($key){
$this->enkey=$key;
}
private function keyED($txt,$encrypt_key)
{
$encrypt_key = md5($encrypt_key);
$ctr=0;
$tmp = "";
for ($i=0;$i<strlen($txt);$i++)
{
if ($ctr==strlen($encrypt_key)) $ctr=0;
$tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1);
$ctr++;
}
return $tmp;
}
//加密字符串
public function encrypt($txt,$key='')
{
if(!$key){
$key=$this->enkey;
}
srand((double)microtime()*1000000);
$encrypt_key = md5(rand(0,32000));
$ctr=0;
$tmp = "";
for ($i=0;$i<strlen($txt);$i++)
{
if ($ctr==strlen($encrypt_key)) $ctr=0;
$tmp.= substr($encrypt_key,$ctr,1) .
(substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1));
$ctr++;
}
$r=base64_encode($this->keyED($tmp,$key));
$r=str_replace('=',$this->rep_char,$r);
return $r;
}
//解密字符串
public function decrypt($txt,$key='')
{
$txt=str_replace($this->rep_char,'=',$txt);
$txt=base64_decode($txt);
if(!$key){
$key=$this->enkey;
}
$txt = $this->keyED($txt,$key);
$tmp = "";
for ($i=0;$i<strlen($txt);$i++)
{
$md5 = substr($txt,$i,1);
$i++;
$tmp.= (substr($txt,$i,1) ^ $md5);
}
return $tmp;
}
}
希望本文所述對大家的php程序設(shè)計有所幫助。
相關(guān)文章
php產(chǎn)生隨機數(shù)的兩種方法實例代碼 輸出隨機IP
php產(chǎn)生隨機數(shù)的兩種方法實例代碼 輸出隨機IP,需要的朋友可以參考下。2011-04-04
PHP操作MongoDB實現(xiàn)增刪改查功能【附php7操作MongoDB方法】
這篇文章主要介紹了PHP操作MongoDB實現(xiàn)增刪改查功能,結(jié)合實例形式總結(jié)分析了php操作MongoDB的常用技巧,并附帶php7操作MongoDB方法,具有一定參考借鑒價值,需要的朋友可以參考下2018-04-04
PHP采用自定義函數(shù)實現(xiàn)遍歷目錄下所有文件的方法
這篇文章主要介紹了PHP采用自定義函數(shù)實現(xiàn)遍歷目錄下所有文件的方法,是PHP程序開發(fā)中常見的功能,需要的朋友可以參考下2014-08-08

