ホームページ >バックエンド開発 >PHPチュートリアル >PHP_PHP チュートリアルの暗号化および復号化関数と DES 暗号化および復号化の例

PHP_PHP チュートリアルの暗号化および復号化関数と DES 暗号化および復号化の例

WBOY
WBOYオリジナル
2016-07-13 10:16:33956ブラウズ

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++]);
}
returnbase64_encode(passport_key($tmp,$key));
}

復号化コードは次のとおりです:

コードは次のとおりです:

/*
*機能: 文字列を復号化します
*パラメータ1: 復号化する暗号文
*パラメータ2: キー
*/
functionパスポート_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 'Cryptotext:',$encrypt."

";
echo '翻訳:',$decrypt."

";


DES 暗号化および復号化関数の具体的なコードは次のとおりです:

コードは次のとおりです:

クラスDES
{
var $key;
var $iv; // オフセット

関数 DES( $key, $iv=0 ) {
//キーの長さ 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) {
//暗号化して、大文字の 16 進数の文字列を返します
$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 ) ) );
}

関数 decrypt($str) {
//復号化
$strBin = $this->hex2bin( strto lower( $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 $binData .= chr ( hexdec ( substr ( $hexData, $i, 2 ) ) );
}
$binData を返します;
}

関数 pkcs5Pad($text, $blocksize) {
$pad = $blocksize - (strlen ( $text ) % $blocksize);
$text を返します ( 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 を返します;
substr ( $text, 0, - 1 * $pad ) を返します;
}
}
?>


テスト結果は次のとおりです:

コードは次のとおりです:

$str = '12345678';
$key = '1234abcd';
$crypt = 新しい DES($key);
$mstr = $crypt->encrypt($str);
$str = $crypt->decrypt($mstr);
エコー $str.' <=> '.$mstr;


例 2

コードは次のとおりです:

コードは次のとおりです:

/**
*getメソッドを通じてURLで渡す必要があるパラメータを暗号化します
*/
関数 args_encode($data) {
if(is_array($data)) {
$string = http_build_query($data);
returnbase64_encode($string);
} その他 {
false を返します;
}
}

/**
*URLのgetメソッドで渡されたパラメータを取得します
*/
関数 getargs() {
$string =base64_decode($_GET['args']);
parse_str($string,$g);
$g を返します;
}

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/896780.html技術記事 PHP の暗号化と復号化関数と DES 暗号化と復号化の例、PHP での暗号化と復号化の例 暗号化関数: コードは次のとおりです: /* *関数: 文字列を暗号化します *パラメーター 1: 暗号化が必要です...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。