Heim >Backend-Entwicklung >PHP-Tutorial >php 加密解密类(含公钥)的实现代码_PHP教程

php 加密解密类(含公钥)的实现代码_PHP教程

WBOY
WBOYOriginal
2016-07-21 14:58:17820Durchsuche

class Crypt{
// 本文来源:龙哥博客
protected $key = “”; //公钥

private function keyED($txt,$encrypt_key)
{
$encrypt_key = md5($encrypt_key);
$ctr=0;
$tmp = “”;
for ($i=0;$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{
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{
$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;
}
// Downloads By http://www.bkjia.com
}
$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
\n”;
echo “加密后 : $enc_text
\n”;
echo “解密后 : $dec_text \n”;
?>

执行结果:

加密前 : http://www.52blogger.com
加密后 : hSzQ’Z* kP~y(WpVs=6Q3gZbR5QkhtZ(f=Zm
解密后 : http://www.52blogger.com

注意的是:每次加密后的字符串都不一样,另外还需要公钥才能解密,如果公钥不对,解密的结果与明文是不一致的.可惜的是,此方法貌似不支持中文~

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/363850.htmlTechArticle?php class Crypt{ // 本文来源:龙哥博客 protected $key = ; //公钥 private function keyED($txt,$encrypt_key) { $encrypt_key = md5($encrypt_key); $ctr=0; $tmp = ; for ($i=...
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn