午夜国产狂喷潮在线观看|国产AⅤ精品一区二区久久|中文字幕AV中文字幕|国产看片高清在线

    一個PHP針對數(shù)字的加密解密類
    來源:易賢網(wǎng) 閱讀:3434 次 日期:2014-08-22 09:57:47
    溫馨提示:易賢網(wǎng)小編為您整理了“一個PHP針對數(shù)字的加密解密類”,方便廣大網(wǎng)友查閱!

    這篇文章主要介紹了一個PHP針對數(shù)字的加密解密類,該類僅支持加密數(shù)字。比較適用于數(shù)據(jù)庫中id字段的加密解密,以及根據(jù)數(shù)字顯示url的加密,需要的朋友可以參考下

    代碼如下:

    <?php

    /**

    * 加密解密類

    * 該算法僅支持加密數(shù)字。比較適用于數(shù)據(jù)庫中id字段的加密解密,以及根據(jù)數(shù)字顯示url的加密。

    * @author 深秋的竹子

    * @version alpha

    * @加密原則 標(biāo)記長度 + 補(bǔ)位 + 數(shù)字替換

    * @加密步驟:

    * 將a-z,A-Z,0-9 62個字符打亂,取前M(數(shù)字最大的位數(shù))位作為 標(biāo)記長度字符串,取第M+1 到第M+10位為數(shù)字替換字符串,剩余的為補(bǔ)位字符串

    * 1.計(jì)算數(shù)字長度n,取亂碼的第n位作為標(biāo)記長度。

    * 2.計(jì)算補(bǔ)位的長度,加密串的長度N -1 - n 為補(bǔ)位的長度。根據(jù)指定的算法得到補(bǔ)位字符串。

    * 3.根據(jù)數(shù)字替換字符串替換數(shù)字,得到數(shù)字加密字符串。

    * 標(biāo)記長度字符 + 補(bǔ)位字符串 + 數(shù)字加密字符串 = 加密串

    * Usage:

    * $obj = new XDeode(9);

    * $e_txt = $obj->encode(123);

    * echo $e_txt.'<br/>';

    * echo $key->decode($e_txt);

    */

    class XDeode{

    private $strbase = "Flpvf70CsakVjqgeWUPXQxSyJizmNH6B1u3b8cAEKwTd54nRtZOMDhoG2YLrI";

    private $key,$length,$codelen,$codenums,$codeext;

    function __construct($length = 9,$key = 2543.5415412812){

    $this->key = $key;

    $this->length = $length;

    $this->codelen = substr($this->strbase,0,$this->length);

    $this->codenums = substr($this->strbase,$this->length,10);

    $this->codeext = substr($this->strbase,$this->length + 10);

    }

    function encode($nums){

    $rtn = "";

    $numslen = strlen($nums);

    //密文第一位標(biāo)記數(shù)字的長度

    $begin = substr($this->codelen,$numslen - 1,1);

    //密文的擴(kuò)展位

    $extlen = $this->length - $numslen - 1;

    $temp = str_replace('.', '', $nums / $this->key);

    $temp = substr($temp,-$extlen);

    $arrextTemp = str_split($this->codeext);

    $arrext = str_split($temp);

    foreach ($arrext as $v) {

    $rtn .= $arrextTemp[$v];

    }

    $arrnumsTemp = str_split($this->codenums);

    $arrnums = str_split($nums);

    foreach ($arrnums as $v) {

    $rtn .= $arrnumsTemp[$v];

    }

    return $begin.$rtn;

    }

    function decode($code){

    $begin = substr($code,0,1);

    $rtn = '';

    $len = strpos($this->codelen,$begin);

    if($len!== false){

    $len++;

    $arrnums = str_split(substr($code,-$len));

    foreach ($arrnums as $v) {

    $rtn .= strpos($this->codenums,$v);

    }

    }

    return $rtn;

    }

    }

    /**** 示例 ****/

    $begin = 9950;

    $end = $begin + 50;

    $obj = new XDeode(9);

    for($i=$begin;$i<$end;$i++){

    $en = $obj->encode($i);

    $de = $obj->decode($en);

    echoln("[{$i}]=[{$en}]=[{$de}]");

    }

    function echoln($str){

    echo "{$str}<br/>";

    }

    ?>

    運(yùn)行示例結(jié)果:

    [9950]=[vmizxPPga]=[9950]

    [9951]=[vSNSSPPgk]=[9951]

    [9952]=[vNQNyPPgV]=[9952]

    [9953]=[vyyJJPPgj]=[9953]

    [9954]=[vNzQzPPgq]=[9954]

    [9955]=[vyNzmPPgg]=[9955]

    [9956]=[vXxSNPPge]=[9956]

    [9957]=[vXJJJPPgW]=[9957]

    [9958]=[vXziQPPgU]=[9958]

    [9959]=[viXxSPPgP]=[9959]

    [9960]=[vQxmyPPea]=[9960]

    [9961]=[viJyJPPek]=[9961]

    更多信息請查看IT技術(shù)專欄

    更多信息請查看網(wǎng)絡(luò)編程
    易賢網(wǎng)手機(jī)網(wǎng)站地址:一個PHP針對數(shù)字的加密解密類
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2025國考·省考課程試聽報名

    • 報班類型
    • 姓名
    • 手機(jī)號
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報警專用圖標(biāo)