실 용적 인 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'를 공개 키 로 복호화 해 야 합 니 다.그렇지 않 으 면 복호화 할 수 없습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.