PHP の暗号化および復号化関数と DES 暗号化および復号化の例、phpdes 暗号化および復号化の例
この記事の例では、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 ) ) );
}
関数復号化($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 を返します;
}
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。
base64_encode と
base64_decode ソリューション
2つの関数は次のとおりです。Crypt
FunctionEncrypt($ encrypt、$ key = ""){
$ iv = mcrypt_create_iv(mcrypt_get_iv_size(mcrypt_rijndael_256、mcrypt_mode_ecb) dael_256、 $key , $encrypt, MCRYPT_MODE_ECB, $iv );
$encode = Base64_encode ( $passcrypt );
return $encode;
}
復号化関数: decrypt
function decrypt($decrypt,$key="") {
$decoded =base64_decode ( $decrypt );
$iv = mcrypt_create_iv ( mcrypt_get_iv_size ( MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB ), MCRYPT_RAND );
$decrypted = mcrypt_decrypt ( MCRYPT_RIJNDAEL_256, $key, $decoded, MCRYPT_MODE_ECB, $iv );
$decrypted を返します。
}
http://www.bkjia.com/PHPjc/895109.html
www.bkjia.comtruehttp://www.bkjia.com/PHPjc/895109.html技術記事 PHP および DES の暗号化および復号化関数の暗号化および復号化の例、phpdes 暗号化および復号化の例 この記事では、PHP における暗号化および復号化関数と DES の暗号化および復号化の適用について説明し、参考として皆さんに共有します。 ...