转:http://blog.163.com/zhaozunjie@126/blog/static/139824061201063122012900/
	<?php 
class  Crypt{ 
protected $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(empty($key)){ 
$key=$this->key; 
} 
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++; 
} 
return $this->keyED($tmp,$key); 
} 
public function decrypt($txt,$key=”") 
{ 
if(empty($key)){ 
$key=$this->key; 
} 
$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; 
} 
public function setKey($key) 
{ 
if(empty($key)){ 
return null; 
} 
$this->key=$key; 
} 
public function getKey() 
{ 
return $this->key; 
} 
} 
$string = “http://www.52blogger.com”; 
$crypt= new Crypt(); 
$crypt->setKey(“http://www.52blogger.com”); 
$enc_text = $crypt->encrypt($string,$crypt->getKey()); 
$dec_text = $crypt->decrypt($enc_text,$crypt->getKey()); 
echo “加密前 : $string <br/>\n”; 
echo “加密后 : $enc_text <br/>\n”; 
echo “解密后 : $dec_text \n”; 
?> 
执行结果:
加密前 : http://www.52blogger.com 
加密后 : hSzQ’Z* kP~ y (WpVs   = 6Q3 gZbR5Qk h tZ( f=Zm 
解密后 : http://www.52blogger.com




