PHP_php 기술의 암호화 및 복호화 기능과 DES 암호화 및 복호화 예제

WBOY
풀어 주다: 2016-05-16 20:34:31
원래의
994명이 탐색했습니다.

이 기사의 예는 PHP의 암호화 및 복호화 기능과 DES 암호화 및 복호화의 적용을 설명하며 참조용으로 모든 사람과 공유됩니다. 세부 내용은 다음과 같습니다.

예시, PHP 암호화 및 복호화 예시

암호화 기능:

코드 복사 코드는 다음과 같습니다.
/*
*기능: 문자열 암호화
*매개변수 1: 암호화가 필요한 콘텐츠
*파라미터 2: 키
*/
function Passport_encrypt($str,$key){ //암호화 기능
srand((double)microtime() * 1000000);
$encrypt_key=md5(rand(0, 32000));
$ctr=0;
$tmp='';
for($i=0;$i $ctr=$ctr==strlen($encrypt_key)?0:$ctr;
$tmp.=$encrypt_key[$ctr].($str[$i] ^ $encrypt_key[$ctr ]);
}
return base64_encode(passport_key($tmp,$key));
}

복호화 코드는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
/*
*기능: 문자열 복호화
*파라미터 1: 복호화할 암호문
*파라미터 2: 키
*/
function Passport_decrypt($str,$key){ //복호화 기능
$str=passport_key(base64_decode($str),$key);
$tmp='';
for($i=0;$i $md5=$str[$i];
$tmp.=$str[ $i] ^ $md5;
}
$tmp; 반환
}

보조 기능:
코드 복사 코드는 다음과 같습니다.
/*
*보조기능
*/
여권_키($str,$encrypt_key){
함수 $encrypt_key=md5($encrypt_key);
$ctr=0;
$tmp='';
for($i=0;$i $ctr=$ctr==strlen($encrypt_key)?0:$ctr;
$tmp.=$str[$i] ^ $encrypt_key[$ctr ];
}
$tmp; 반환
}

아래와 같이 사용하세요
코드 복사 코드는 다음과 같습니다.
$str='저자: www.jb51.net';
$key='123456';
$encrypt=passport_encrypt($str,$key);
$decrypt=passport_decrypt($encrypt,$key);
echo '원본 텍스트:',$str."

";
echo '암호화문:',$encrypt."

";
echo '번역:',$decrypt."

";

DES 암호화 및 복호화 기능의 구체적인 코드는 다음과 같습니다.
코드 복사 코드는 다음과 같습니다.
클래스 DES
{
 var $key;
 var $iv; //총량
 
 함수 DES( $key, $iv=0 ) {
 //key长道8例如:1234abcd
  $this->key = $key;
  if( $iv == 0 ) {
   $this->iv = $key;
  } 그 밖의 {
   $this->iv = $iv; //mcrypt_create_iv ( mcrypt_get_block_size (MCRYPT_DES, MCRYPT_MODE_CBC), MCRYPT_DEV_RANDOM );
  }
 }
 
 함수 암호화($str) {
 //加密,返回大写十六进字符串
  $size = mcrypt_get_block_size ( MCRYPT_DES, MCRYPT_MODE_CBC );
  $str = $this->pkcs5Pad ( $str, $size );
  return strtoupper( bin2hex( mcrypt_cbc(MCRYPT_DES, $this->key, $str, MCRYPT_ENCRYPT, $this->iv ) ) );
 }
 
 함수 해독($str) {
 //解密
  $strBin = $this->hex2bin( strtolower( $str ) );
  $str = mcrypt_cbc( MCRYPT_DES, $this->key, $strBin, MCRYPT_DECRYPT, $this->iv );
  $str = $this->pkcs5Unpad( $str );
  $str;
반환  }
 
 함수 hex2bin($hexData) {
  $binData = "";
  for($i = 0; $i < strlen ( $hexData ); $i = 2) {
   $binData .= chr ( hexdec ( substr ( $hexData, $i, 2 ) ) );
  }
  $binData 반환;
 }
 
 함수 pkcs5Pad($text, $blocksize) {
  $pad = $blocksize - (strlen ( $text ) % $blocksize);
  $text를 반환합니다. str_repeat( chr( $pad ), $pad );
 }
 
 함수 pkcs5Unpad($text) {
  $pad = ord ( $text {strlen ( $text ) - 1} );
  if ($pad > strlen ( $text ))
   false를 반환합니다.
  if (strspn ( $text, chr ( $pad ), strlen ( $text ) - $pad ) != $pad)
   false를 반환합니다.
  하위 문자열 반환( $text, 0, - 1 * $pad );
 }
}
?>

以下是测试结果:
复제대码 代码如下:
$str = '12345678';
$key = '1234abcd';
$crypt = 새로운 DES($key);
$mstr = $crypt->암호화($str);
$str = $crypt->decrypt($mstr);
에코  $str.' <=> '.$mstr;

예2

代码如下:

复主代码 代码如下:
/**
*get 메소드를 통해 URL에 전달되어야 하는 매개변수를 암호화합니다
*/
함수 args_encode($data) {
if(is_array($data)) {
$string = http_build_query($data);
return base64_encode($string);
} 그 밖의 {
false를 반환합니다.
}
}

/**
*url의 get 메소드로 전달된 매개변수를 가져옵니다
*/
함수 getargs() {
$string = base64_decode($_GET['args']);
pars_str($string,$g);
$g 반환
}

希望本文所述对大家的PHP程序设计有所帮助。

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿