이 기사의 예는 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程序设计有所帮助。