クラス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 を返します;
}
http://www.bkjia.com/PHPjc/896780.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/896780.html技術記事 PHP の暗号化と復号化関数と DES 暗号化と復号化の例、PHP での暗号化と復号化の例 暗号化関数: コードは次のとおりです: /* *関数: 文字列を暗号化します *パラメーター 1: 暗号化が必要です...