• <nav id="ms0ec"><nav id="ms0ec"></nav></nav>
  • <input id="ms0ec"><tt id="ms0ec"></tt></input>
  • <menu id="ms0ec"><strong id="ms0ec"></strong></menu>
  • 歡迎訪問, 北京金世紀培訓學校 官方網站!

    課程
    導航

    PHP中加密解密函數與DES加密解密實例

    編輯:金世紀      人氣:      發布時間:2014-10-24

    例子,php加密解密的例子

    加密函數:

     

    代碼如下: /*
    *功能:對字符串進行加密處理
    *參數一:需要加密的內容
    *參數二:密鑰
    */
    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));
    }

     

    解密代碼如下:

    代碼如下: /*
    *功能:對字符串進行解密處理
    *參數一:需要解密的密文
    *參數二:密鑰
    */
    function passport_decrypt($str,$key){ //解密函數
    $str=passport_key(base64_decode($str),$key);
    $tmp='';
    for($i=0;$i $md5=$str[$i];
    $tmp.=$str[++$i] ^ $md5;
    }
    return $tmp;
    }


    輔助函數:

    代碼如下: /*
    *輔助函數
    */
    function passport_key($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++];
    }
    return $tmp;
    }


    使用如下所示

    代碼如下: $str='作者:www.jb51.net';
    $key='123456';
    $encrypt=passport_encrypt($str,$key);
    $decrypt=passport_decrypt($encrypt,$key);
    echo '原文:',$str."

    ";
    echo '密文:',$encrypt."

    ";
    echo '譯文:',$decrypt."

    ";


    DES加密解密函數具體代碼如下:

    代碼如下: class DES
    {
    var $key;
    var $iv; //偏移量

    function DES( $key, $iv=0 ) {
    //key長度8例如:1234abcd
    $this->key = $key;
    if( $iv == 0 ) {
    $this->iv = $key;
    } else {
    $this->iv = $iv; //mcrypt_create_iv ( mcrypt_get_block_size (MCRYPT_DES, MCRYPT_MODE_CBC), MCRYPT_DEV_RANDOM );
    }
    }

    function encrypt($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 ) ) );
    }

    function decrypt($str) {
    //解密
    $strBin = $this->hex2bin( strtolower( $str ) );
    $str = mcrypt_cbc( MCRYPT_DES, $this->key, $strBin, MCRYPT_DECRYPT, $this->iv );
    $str = $this->pkcs5Unpad( $str );
    return $str;
    }

    function hex2bin($hexData) {
    $binData = "";
    for($i = 0; $i < strlen ( $hexData ); $i += 2) {
    $binData .= chr ( hexdec ( substr ( $hexData, $i, 2 ) ) );
    }
    return $binData;
    }

    function pkcs5Pad($text, $blocksize) {
    $pad = $blocksize - (strlen ( $text ) % $blocksize);
    return $text . str_repeat ( chr ( $pad ), $pad );
    }

    function pkcs5Unpad($text) {
    $pad = ord ( $text {strlen ( $text ) - 1} );
    責任編輯:金世紀

    最熱教程排行

    Copyright 1996-2014 金世紀教育 版權所有 Power by 21jsj.com

    網站備案: 京ICP備15056050號-1

  • <nav id="ms0ec"><nav id="ms0ec"></nav></nav>
  • <input id="ms0ec"><tt id="ms0ec"></tt></input>
  • <menu id="ms0ec"><strong id="ms0ec"></strong></menu>
  • 本溪棋牌室