>  기사  >  백엔드 개발  >  php 加密解密种(含公钥)

php 加密解密种(含公钥)

WBOY
WBOY원래의
2016-06-13 13:12:021680검색

php 加密解密类(含公钥)

?

<span><span><?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 </span>"加密后 : $enc_text <br/>\n</span>"; 
<span><span>echo </span>"解密后 : $dec_text \n</span>"; 
<span><span>?> </span></span>
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.