300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > php 每次加密结果都不一样 实用的PHP带公钥加密类分享(每次加密结果都不一样哦)...

php 每次加密结果都不一样 实用的PHP带公钥加密类分享(每次加密结果都不一样哦)...

时间:2022-11-24 20:32:30

相关推荐

php 每次加密结果都不一样 实用的PHP带公钥加密类分享(每次加密结果都不一样哦)...

WEB交互安全一直是个各大网站的首要解决方案,本文介绍的PHP加密类非常实用哦,带有公钥,这是最大的亮点,没有公钥是不能解密的,加密度非常高。

类代码:

/**

* PHP加密类

* 琼台博客

*/

class Jiami{

// 公钥

protected $key = ‘lee‘;

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 getPK(){

return $this->key;

}

}

使用方法:

// 先包含加密类

require_once(‘jiami.class.php‘);

// 要加密的字符串

$string = ‘‘;

// 实例化加密类

$jiami= new Jiami();

// 设置公钥

$jiami->setKey(‘qttc‘);

// 加密字符串

$enc = $jiami->encrypt($string,$jiami->getPK());

// 解密字符串

$dec = $jiami->decrypt($enc,$jiami->getPK());

echo ‘‘;

echo ‘加密前 : ‘.$string .‘

‘;

echo ‘加密后 : ‘.$enc .‘

‘;

echo ‘解密后 : ‘.$dec;

?>

页面执行结果

结果1:

结果2:

由以上结果可以看到,每次加密产生的加密字符串都不一样,这是随机的。

解密的时候,需要使用加密时的公钥,否则无法解密。如你这边加密公钥使用‘qttc‘,解密的时候,也需要使用这个‘qttc‘作为公钥去解密,否则无法解密。

原文:/article/54048.htm

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。