在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風下載站 > 網頁設計教程 > 詳細頁面

php中常用的加密解密算法的講解(代碼)

php中常用的加密解密算法的講解(代碼)

更新時間:2025-12-04 文章作者:未知 信息來源:網絡 閱讀次數:

網頁的本質就是超級文本標記語言,通過結合使用其他的Web技術(如:腳本語言、公共網關接口、組件等),可以創造出功能強大的網頁。因而,超級文本標記語言是萬維網(Web)編程的基礎,也就是說萬維網是建立...
網頁的本質就是超級文本標記語言,通過結合使用其他的Web技術(如:腳本語言、公共網關接口、組件等),可以創造出功能強大的網頁。因而,超級文本標記語言是萬維網(Web)編程的基礎,也就是說萬維網是建立在超文本基礎之上的。超級文本標記語言之所以稱為超文本標記語言,是因為文本中包含了所謂“超級鏈接”點。
本篇文章給大家帶來的內容是關于php中常用的加密解密算法的講解(代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

這里主要介紹三種常用的加密解密算法:
方法一:

/**
 * @param $string    要加密/解密的字符串
 * @param string $operation   類型,ENCODE 加密;DECODE 解密
 * @param string $key    密匙
 * @param int $expiry    有效期
 * @return string
 */
function authcode($string, $operation = 'DECODE', $key = 'encrypt', $expiry = 0)
{
    // 動態密匙長度,相同的明文會生成不同密文就是依靠動態密匙
    $ckey_length = 4;
    // 密匙
    $key = md5($key ? $key : $GLOBALS['discuz_auth_key']);
    // 密匙a會參與加解密
    $keya = md5(substr($key, 0, 16));
    // 密匙b會用來做數據完整性驗證
    $keyb = md5(substr($key, 16, 16));
    // 密匙c用于變化生成的密文
    $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length) :
        substr(md5(microtime()), -$ckey_length)) : '';
    // 參與運算的密匙
    $cryptkey = $keya . md5($keya . $keyc);
    $key_length = strlen($cryptkey);
    // 明文,前10位用來保存時間戳,解密時驗證數據有效性,10到26位用來保存$keyb(密匙b),
    //解密時會通過這個密匙驗證數據完整性
    // 如果是解碼的話,會從第$ckey_length位開始,因為密文前$ckey_length位保存 動態密匙,以保證解密正確
    $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) :
        sprintf('%010d', $expiry ? $expiry + time() : 0) . substr(md5($string . $keyb), 0, 16) . $string;
    $string_length = strlen($string);
    $result = '';
    $box = range(0, 255);
    $rndkey = array();
    // 產生密匙簿
    for ($i = 0; $i <= 255; $i++) {
        $rndkey[$i] = ord($cryptkey[$i % $key_length]);
    }
    // 用固定的算法,打亂密匙簿,增加隨機性,好像很復雜,實際上對并不會增加密文的強度
    for ($j = $i = 0; $i < 256; $i++) {
        $j = ($j + $box[$i] + $rndkey[$i]) % 256;
        $tmp = $box[$i];
        $box[$i] = $box[$j];
        $box[$j] = $tmp;
    }
    // 核心加解密部分
    for ($a = $j = $i = 0; $i < $string_length; $i++) {
        $a = ($a + 1) % 256;
        $j = ($j + $box[$a]) % 256;
        $tmp = $box[$a];
        $box[$a] = $box[$j];
        $box[$j] = $tmp;
        // 從密匙簿得出密匙進行異或,再轉成字符
        $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
    }
    if ($operation == 'DECODE') {
        // 驗證數據有效性,請看未加密明文的格式
        if ((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) &&
            substr($result, 10, 16) == substr(md5(substr($result, 26) . $keyb), 0, 16)
        ) {
            return substr($result, 26);
        } else {
            return '';
        }
    } else {
        // 把動態密匙保存在密文里,這也是為什么同樣的明文,生產不同密文后能解密的原因
        // 因為加密后的密文可能是一些特殊字符,復制過程可能會丟失,所以用base64編碼
        return $keyc . str_replace('=', '', base64_encode($result));
    }
}

使用:

$string = '加密字符串';
// 加密
$encode = authcode($string, 'ENCODE');
echo $encode . '</br>';       // a2f4bSYyUrTum1nAAA9X9BrC4Z3DZazcSa4eLcvDoCnmYc1LTdvtqS4aCds
// 解密
$decode = authcode($encode, 'DECODE');
echo $decode;     // 加密字符串

方法二:

/**
 * @param $string    要加密/解密的字符串
 * @param $operation    類型,E 加密;D 解密
 * @param string $key   密鑰
 * @return mixed|string
 */
function encrypt($string, $operation, $key = 'encrypt')
{
    $key = md5($key);
    $key_length = strlen($key);
    $string = $operation == 'D' ? base64_decode($string) : substr(md5($string . $key), 0, 8) . $string;
    $string_length = strlen($string);
    $rndkey = $box = array();
    $result = '';
    for ($i = 0; $i <= 255; $i++) {
        $rndkey[$i] = ord($key[$i % $key_length]);
        $box[$i] = $i;
    }
    for ($j = $i = 0; $i < 256; $i++) {
        $j = ($j + $box[$i] + $rndkey[$i]) % 256;
        $tmp = $box[$i];
        $box[$i] = $box[$j];
        $box[$j] = $tmp;
    }
    for ($a = $j = $i = 0; $i < $string_length; $i++) {
        $a = ($a + 1) % 256;
        $j = ($j + $box[$a]) % 256;
        $tmp = $box[$a];
        $box[$a] = $box[$j];
        $box[$j] = $tmp;
        $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
    }
    if ($operation == 'D') {
        if (substr($result, 0, 8) == substr(md5(substr($result, 8) . $key), 0, 8)) {
            return substr($result, 8);
        } else {
            return '';
        }
    } else {
        return str_replace('=', '', base64_encode($result));
    }
}

使用:

$string = '加密字符串';
// 加密
$encode = encrypt($string, 'E');
echo $encode . '</br>';       // 0Jzym5UzkRKH726U7Pyt7ixzLz9YEEA
// 解密
$decode = encrypt($encode, 'D');
echo $decode;     // 加密字符串

方法三:

/**
 * @param $data  要加密的字符串
 * @param $key   密鑰
 * @return string
 */
function encrypt($data, $key = 'encrypt')
{
    $key = md5($key);
    $x = 0;
    $len = strlen($data);
    $l = strlen($key);
    $char = '';
    for ($i = 0; $i < $len; $i++) {
        if ($x == $l) {
            $x = 0;
        }
        $char .= $key{$x};
        $x++;
    }
    $str = '';
    for ($i = 0; $i < $len; $i++) {
        $str .= chr(ord($data{$i}) + (ord($char{$i})) % 256);
    }
    return base64_encode($str);
}


/**
 * @param $data    要解密的字符串
 * @param $key     密鑰
 * @return string
 */
function decrypt($data, $key = 'encrypt')
{
    $key = md5($key);
    $x = 0;
    $data = base64_decode($data);
    $len = strlen($data);
    $l = strlen($key);
    $char = '';
    for ($i = 0; $i < $len; $i++) {
        if ($x == $l) {
            $x = 0;
        }
        $char .= substr($key, $x, 1);
        $x++;
    }
    $str = '';
    for ($i = 0; $i < $len; $i++) {
        if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1))) {
            $str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));
        } else {
            $str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));
        }
    }
    return $str;
}

使用:

$string = '加密字符串';
// 加密
$encode = encrypt($string);
echo $encode . '</br>';       // Gr0DHeHrRw7KGBLcSOzj
// 解密
$decode = decrypt($encode);
echo $decode;     // 加密字符串

以上就是php中常用的加密解密算法的講解(代碼)的詳細內容,更多請關注php中文網其它相關文章!


網站建設是一個廣義的術語,涵蓋了許多不同的技能和學科中所使用的生產和維護的網站。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 一本一道久久a久久综合蜜桃| 国产成人亚洲综合无码| 欧美大黑帍在线播放| 激情文学亚洲色图| 免费看污污网站| 日韩一级片播放| 国产精品天天av精麻传媒| 精品中文字幕av| 日本成年人网址| 日本999视频| 午夜一区二区视频| 日韩av影视大全| 九一免费在线观看| 国产九九九九九| 凹凸国产熟女精品视频| 国产精品wwwww| 亚洲欧美日韩三级| 日本一道在线观看| 国内精品视频一区二区三区| 国产二区视频在线播放| 欧美精品成人网| 日本免费色视频| 91亚洲精品国产| 黄色片久久久久| 6080国产精品| 国产精品12345| 99热手机在线| 精品视频在线观看一区二区| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 久久午夜夜伦鲁鲁一区二区| 九一精品久久久| 少妇高潮毛片色欲ava片| 日韩福利视频在线| 国产 欧美 日韩 一区| 国产一级片黄色| 影音先锋成人资源网站| 十八禁视频网站在线观看| 欧洲在线免费视频| 妺妺窝人体色www在线小说| 亚洲欧美日韩综合网| 免费看毛片的网址| 99日在线视频| 一本大道熟女人妻中文字幕在线 | 黄色一级视频片| 日韩av加勒比| 蜜臀久久99精品久久久酒店新书| 青娱乐精品在线| 久热免费在线观看| 国产精品国产亚洲精品看不卡| 色综合色综合色综合色综合| 欧美日韩精品在线一区二区| 久久精品久久99| 亚洲这里只有精品| 十八禁视频网站在线观看| 日韩精品在线观看av| 午夜啪啪小视频| 亚洲欧美视频二区| 麻豆传传媒久久久爱| 久久精品99国产| 51xx午夜影福利| 婷婷丁香激情网| 三上悠亚久久精品| 国产尤物av一区二区三区| 日本美女久久久| 99999精品| 欧洲美女亚洲激情| 久久久久久久久久毛片| 日韩高清第一页| 亚洲天堂av一区二区| 五月天亚洲视频| 成人免费在线观看视频网站| 久久久国产欧美| 污视频网站观看| wwwwwxxxx日本| 黄色一级片免费播放| 午夜免费福利网站| 欧美 日韩 国产精品| 精品免费久久久久久久| 日韩 欧美 视频| 久久亚洲中文字幕无码| 啊啊啊一区二区| 91蝌蚪视频在线观看| 久热精品在线播放| 日本精品一区在线| 大西瓜av在线| 日韩av播放器| 国产麻豆电影在线观看| 男人天堂手机在线视频| 欧美日韩一区二区在线免费观看| 国产黄色特级片| 国产美女18xxxx免费视频| 四虎免费在线观看视频| 黄色大片在线免费看| 成人性做爰aaa片免费看不忠| 国产精品视频中文字幕| 男人草女人视频| 波多结衣在线观看| 九一免费在线观看| 激情网站五月天| 男人的天堂视频在线| 99免费视频观看| 久久最新免费视频| 成熟老妇女视频| 亚洲激情免费视频| 欧美 日韩 国产 激情| 成年人三级视频| 午夜精品久久久内射近拍高清| 免费av不卡在线| 色综合久久久久无码专区| www.污污视频| 色婷婷狠狠18| 国产精品国产亚洲精品看不卡| 污污的网站免费| 欧美黄网站在线观看| 99久久久精品视频| 蜜桃福利午夜精品一区| 蜜臀久久99精品久久久酒店新书| 国产日本欧美在线| 不卡的在线视频| 色噜噜狠狠永久免费| 欧美精品第三页| 阿v天堂2017| 极品美女扒开粉嫩小泬| 国产在线观看欧美| 黄色a级在线观看| 久久精品国产99久久99久久久| 爱情岛论坛成人| www黄色日本| 国产 日韩 亚洲 欧美| 日韩视频在线观看视频| 97人人模人人爽人人澡| 中文字幕色网站| 一级日本黄色片| 国产女主播av| 福利视频一区二区三区四区| a级免费在线观看| 日韩日韩日韩日韩日韩| 亚洲熟妇无码一区二区三区| 亚洲色成人www永久在线观看 | 日韩中字在线观看| 国产精品一线二线三线| 成人免费毛片在线观看| 成熟了的熟妇毛茸茸| 欧洲黄色一级视频| 欧美韩国日本在线| 99视频在线视频| 久久久久久久久久一区二区| 亚洲一二三av| 国产免费一区二区视频| 丝袜老师办公室里做好紧好爽| 噜噜噜久久亚洲精品国产品麻豆| 爱福利视频一区二区| 日韩av片网站| 亚洲精品少妇一区二区| 午夜精品久久久久久久无码| 男人天堂成人在线| 日本特黄在线观看| 亚洲中文字幕无码av永久| 不要播放器的av网站| 91香蕉视频网址| 亚洲国产精品久久久久婷蜜芽| 波多野结衣天堂| www.avtt| 性生生活大片免费看视频| 成人国产一区二区三区| 99视频精品免费| 天堂а√在线中文在线| 久久精品免费网站| 日韩欧美一级在线| 国产成人黄色网址| 免费一级特黄毛片| 午夜影院免费版| 成年人免费在线播放| 欧美xxxx吸乳| 成人性生交免费看| 成人小视频在线看| 亚洲 欧美 综合 另类 中字| 在线观看免费的av| 日本三区在线观看| 蜜臀精品一区二区| 欧美亚洲视频一区| 黄色片视频在线| 国模杨依粉嫩蝴蝶150p| 免费超爽大片黄| 中文字幕在线中文| 毛毛毛毛毛毛毛片123| www.激情小说.com| 欧美一级裸体视频| 欧美成人一区二区在线观看| 成人av在线播放观看| av磁力番号网| 亚洲欧美日韩精品一区| 天天插天天操天天射| 农村妇女精品一二区| 国产精品50p| 免费高清在线观看免费| 岳毛多又紧做起爽| 国产综合av在线| 五十路熟女丰满大屁股| 麻豆一区二区三区在线观看|