실 용적 인 PHP 공개 키 암호 화 클래스 공유(매번 암호 화 결과 가 다 릅 니 다)

WEB 의 상호작용 안전 은 각 사이트 의 가장 중요 한 해결 방안 이 었 다.본 고 에서 소개 한 PHP 암호 화 류 는 매우 실 용적 이 고 공개 키 가 있 는데 이것 은 가장 큰 하 이 라이트 이다.공개 키 가 없 으 면 복호화 할 수 없고 암호 화 도가 매우 높다.
클래스 코드:

<?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<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 = 'https://www.jb51.net';
 
//       
$jiami= new Jiami();
 
//     
$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;
?>
페이지 실행 결과
결과 1:

결과 2:

상기 결 과 를 통 해 알 수 있 듯 이 암호 화 될 때마다 암호 화 문자열 이 다 릅 니 다.이것 은 무 작위 입 니 다.
복호화 할 때 암호 화 된 공개 키 를 사용 해 야 합 니 다.그렇지 않 으 면 복호화 할 수 없습니다.만약 당신 이 암호 화 된 공개 키 가'qttc'를 사용한다 면,복호화 할 때 도 이'qttc'를 공개 키 로 복호화 해 야 합 니 다.그렇지 않 으 면 복호화 할 수 없습니다.

좋은 웹페이지 즐겨찾기