實(shí)用的PHP帶公鑰加密類分享(每次加密結(jié)果都不一樣哦)
WEB交互安全一直是個(gè)各大網(wǎng)站的首要解決方案,本文介紹的PHP加密類非常實(shí)用哦,帶有公鑰,這是最大的亮點(diǎn),沒有公鑰是不能解密的,加密度非常高。
類代碼:
<?php
/**
* PHP加密類
* 瓊臺(tái)博客
*/
class Jiami{
// 公鑰
protected $key = 'lee';
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 getPK(){
return $this->key;
}
}
使用方法:
<?php
// 先包含加密類
require_once('jiami.class.php');
// 要加密的字符串
$string = 'http://www.dhdzp.com';
// 實(shí)例化加密類
$jiami= new Jiami();
// 設(shè)置公鑰
$jiami->setKey('qttc');
// 加密字符串
$enc = $jiami->encrypt($string,$jiami->getPK());
// 解密字符串
$dec = $jiami->decrypt($enc,$jiami->getPK());
echo '<meta charset="utf-8" />';
echo '加密前 : '.$string .'<br/>';
echo '加密后 : '.$enc .'<br/>';
echo '解密后 : '.$dec;
?>
頁面執(zhí)行結(jié)果
結(jié)果1:

結(jié)果2:

由以上結(jié)果可以看到,每次加密產(chǎn)生的加密字符串都不一樣,這是隨機(jī)的。
解密的時(shí)候,需要使用加密時(shí)的公鑰,否則無法解密。如你這邊加密公鑰使用‘qttc',解密的時(shí)候,也需要使用這個(gè)'qttc'作為公鑰去解密,否則無法解密。
相關(guān)文章
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
這篇文章主要介紹了Linux基于php-fpm模式的lamp搭建phpmyadmin的方法,以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。2018-10-10
php 二維數(shù)組快速排序算法的實(shí)現(xiàn)代碼
這篇文章主要介紹了php 二維數(shù)組快速排序算法的實(shí)現(xiàn)代碼的相關(guān)資料,希望通過本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-10-10
php實(shí)現(xiàn)base64圖片上傳方式實(shí)例代碼
本篇文章主要介紹了php實(shí)現(xiàn)base64圖片上傳方式實(shí)例代碼,這里整理了詳細(xì)的代碼,具有一定的參考價(jià)值,有需要的小伙伴可以參考下。2017-02-02
PHP實(shí)現(xiàn)搜索地理位置及計(jì)算兩點(diǎn)地理位置間距離的實(shí)例
這篇文章主要介紹了PHP實(shí)現(xiàn)搜索地理位置及計(jì)算兩點(diǎn)地理位置間距離的實(shí)例,地理位置搜尋的例子中使用到了MongoDB數(shù)據(jù)庫,需要的朋友可以參考下2016-01-01
thinkPHP5.0框架API優(yōu)化后的友好性分析
這篇文章主要介紹了thinkPHP5.0框架API優(yōu)化后的友好性,結(jié)合具體實(shí)例分析了thinkPHP5.0框架進(jìn)行API優(yōu)化后在數(shù)據(jù)輸出及錯(cuò)誤調(diào)試方面的友好性改進(jìn),需要的朋友可以參考下2017-03-03
Zend Framework數(shù)據(jù)庫操作技巧總結(jié)
這篇文章主要介紹了Zend Framework數(shù)據(jù)庫操作技巧,結(jié)合實(shí)例形式總結(jié)分析了Zend Framework針對(duì)數(shù)據(jù)庫操作的常見函數(shù)、常用操作及相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-02-02
基于ThinkPHP5.0實(shí)現(xiàn)圖片上傳插件
thinkphp5.0 圖片上傳插件可預(yù)覽裁剪圖片和保存原圖片,執(zhí)行裁剪圖片后會(huì)刪除 裁剪的原圖片目錄,以便減少空間。具體實(shí)現(xiàn)代碼大家參考下本文2017-09-09

