日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

PHP加密解密

發(fā)布時(shí)間:2025/3/21 php 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP加密解密 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近學(xué)習(xí)URL跳轉(zhuǎn)的時(shí)候新進(jìn)三個(gè)超好用的PHP加密解密函數(shù),貌似是discuz里的…使用這些加密解密的原因是因?yàn)橛袝r(shí)自己的URL地址被人獲取以后想破解你里面?zhèn)髦档膬?nèi)容就必須知道你的key,沒有key,他應(yīng)該要破了一陣子才能知道你URL里面的內(nèi)容吧...
閑話少說,先將它們打包成一個(gè)文件就叫fun.php吧
<?php
function passport_encrypt($txt, $key) {
srand((double)microtime() * 1000000);
$encrypt_key = md5(rand(0, 32000));
$ctr = 0;
$tmp = '';
for($i = 0;$i < strlen($txt); $i++) {
?? $ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;
?? $tmp .= $encrypt_key[$ctr].($txt[$i] ^ $encrypt_key[$ctr++]);
}
return base64_encode(passport_key($tmp, $key));
}

function passport_decrypt($txt, $key) {
$txt = passport_key(base64_decode($txt), $key);
$tmp = '';
for($i = 0;$i < strlen($txt); $i++) {
?? $md5 = $txt[$i];
?? $tmp .= $txt[++$i] ^ $md5;
}
return $tmp;
}

function passport_key($txt, $encrypt_key) {
$encrypt_key = md5($encrypt_key);
$ctr = 0;
$tmp = '';
for($i = 0; $i < strlen($txt); $i++) {
?? $ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;
?? $tmp .= $txt[$i] ^ $encrypt_key[$ctr++];
}
return $tmp;
}
?>
以下是一些示例…加深對(duì)這三個(gè)加密解密函數(shù)的理解…
//string.php
<?php
include “fun.php”;

$txt = “This is a test”;
$key = “testkey”;
$encrypt = passport_encrypt($txt,$key);
$decrypt = passport_decrypt($encrypt,$key);

echo $txt.”<br><hr>”;
echo $encrypt.”<br><hr>”;
echo $decrypt.”<br><hr>”;
?>
//array.php
<?php
include “fun.php”;

$array = array(
"a" => "1",
"b" => "2",
"c" => "3",
"d" => "4"
);
//serialize產(chǎn)生一個(gè)可存儲(chǔ)的值,返回一個(gè)字符串,unserialize還原
$txt = serialize($array);
$key = “testkey”;
$encrypt = passport_encrypt($txt,$key);
$decrypt = passport_decrypt($encrypt,$key);
$decryptArray = unserialize($decrypt);

echo $txt.”<br><hr>”;
echo $encrypt.”<br><hr>”;
echo $decrypt.”<br><hr>”;
echo $decryptArray.”<br><hr>”;
?>
關(guān)鍵的地方來了…當(dāng)你要跳轉(zhuǎn)到另外一個(gè)網(wǎng)址,但又要保證你的session無誤的時(shí)候,你需要對(duì)session作一個(gè)處理.貌似一個(gè)公司有一個(gè)網(wǎng)站又有一個(gè)論壇,兩個(gè)地方都有注冊(cè)和登錄,但又不想讓用戶在主頁登錄后跳轉(zhuǎn)到論壇的時(shí)候session失效,即是登錄一次跑完整間公司…
那要怎樣來處理用戶的session呢…
網(wǎng)頁都是無狀態(tài)的,如果要在新的網(wǎng)頁中繼續(xù)使用session,則需要把session從一個(gè)地方移到另一個(gè)地方,可能有些人已經(jīng)想到了,我可以通過url傳址的方式來調(diào)用它….而PHP有個(gè)處理session的變量,叫$_SESSION.于是….
將需要注冊(cè)的session轉(zhuǎn)換成一個(gè)數(shù)組吧.那么,你可以這樣寫:
//login.php
<?php
session_start();
include “fun.php”;
….
$_SESSION[“userid”];
$_SESSION[“username”];
$_SESSION[“userpwd”];

header("Location: http://$domain/process.php?s=".urlencode(passport_encrypt(serialize($_SESSION),"sessionkey")));
?>
上例中先用serialize將$_SESSION變成可存儲(chǔ)的數(shù)據(jù),然后通過passport_encrypt將這個(gè)數(shù)據(jù)加密,加urlencode的原因是因?yàn)?_SESSION加密時(shí),有可能會(huì)產(chǎn)生像料想不到的編碼,所以以防萬一…(事實(shí)證明非常有效)
處理下先
//process.php
<?php
session_start();
include “fun.php”;
??? $_SESSION=unserialize(passport_decrypt($_GET["s"],"sessionkey"));
??? header("Location: http://$domain/index.php");
?>
先用$_GET[“s”]獲取URL的參數(shù),然后用passport_decrypt將其解密,再用unserialize將其數(shù)據(jù)還原成原始數(shù)據(jù)
到了這步處理,你的網(wǎng)頁就可能通過header自由跳轉(zhuǎn)啦….
這種方法還涉及到安全性的問題,如果你的url地址在傳址的過程中被人家獲取的話,那就真的是不好意思了…人家雖然可能破解不了url里邊的內(nèi)容,但人家也可以直接用這個(gè)url地址來登錄你的一些個(gè)人賬戶啊,郵箱帳戶啊甚至銀行帳戶(當(dāng)然很少人會(huì)這樣寫,我例外,哈哈)…聽起來好怕….但其實(shí)你可以在跳轉(zhuǎn)頁面作取消session處理….
以下是加強(qiáng)版的process.php
<?php
??????? session_start();
??????? include_once "fun.php";
??????? $_SESSION=unserialize(passport_decrypt($_GET["s"],"sessionkey"));
??????? if((time()-$_SESSION["TIME"])>30){
??????????????? header("Location: http://$domain/ login.php");
??????????????? unset($_SESSION["USERNAME"]);
??????????????? unset($_SESSION["PASSWORD"]);
??????? }
??????? else
??????? header("Location: http://$domain/ index.php");
?>
寫這個(gè)文件之前,你還要在登錄那邊設(shè)置
$_SESSION["TIME"] = time();
設(shè)置這個(gè)的原因主要是獲取兩邊的時(shí)間,如果跳轉(zhuǎn)的時(shí)候超過30秒的時(shí)候,你就可以讓它跳轉(zhuǎn)到login.php登錄頁面,網(wǎng)速慢的客戶就不好意思啦…但這也預(yù)防了如果此url被人獲取,而這個(gè)人又沒有在30秒內(nèi)登錄的話,那就不好意思啊,超時(shí)重新登錄.
$_SESSION["USERNAME"]和$_SESSION["PASSWORD"] 這兩個(gè)東東就是用戶登錄時(shí)需要輸入的用戶名和密碼了….取消這兩個(gè)session的原因就是因?yàn)槿绻愕膗rl被人獲取了,那個(gè)人雖然在超過30秒內(nèi)跳轉(zhuǎn)到loign.php的頁面,但那些傳過來的session依然有效,只要將url后綴login.php改為index.php….那他一樣登錄成功…
感覺廢話說了一大堆…不知讓不讓人明白一點(diǎn)...明白的就快去實(shí)踐一下…

總結(jié)

以上是生活随笔為你收集整理的PHP加密解密的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产熟妇搡bbbb搡bbbb | 超碰男人的天堂 | 黄色激情在线 | 亚洲AV无码阿娇国产精品 | 天堂在线精品 | 日韩三级在线观看 | 超碰97人人在线 | 拍摄av现场失控高潮数次 | 午夜精品久久久久久久第一页按摩 | 免费网站av | 亚洲国产视频在线观看 | 午夜合集| 黄色网址进入 | 国产精品99久久久精品无码 | 亚洲一区二区三区婷婷 | 日韩视频一区二区三区在线播放免费观看 | 精品无码av一区二区三区四区 | 久久成年 | 香蕉视频二区 | 久青草免费视频 | 男人添女人下部高潮视频 | 亚洲三级视频 | 色婷婷成人 | 欧美精品四区 | 久久久美女视频 | 97在线免费视频观看 | 亚洲熟妇色自偷自拍另类 | 国产精品视频一区二区在线观看 | 日韩av一区二区三区 | 久草免费看 | av在线首页 | 亚洲精品乱码久久久久久蜜桃图片 | 五月天色综合 | 巨大胸大乳奶电影 | sese亚洲 | 国产玖玖 | 免费黄色av电影 | 成人免费看片又大又黄 | 日本免费黄色网 | 久久丫丫 | 91高跟黑色丝袜呻吟动态图 | 国产一级自拍 | 性久久久 | 中文字幕第六页 | 免费禁漫天堂a3d | 国产又粗又猛又爽又黄无遮挡 | 精品+无码+在线观看 | 11一12免费毛片 | 欧美性极品 | 亚洲一区 视频 | 欧美偷拍视频 | 亚洲做受高潮无遮挡 | 成人性做爰aaa片免费 | 日韩一区二区三区在线观看视频 | 国产国产国产 | 嫩草影院污| 一区二区伦理 | 伊人欧美 | 男人天堂成人 | 操日本女人 | 黄色天天影视 | 中文字幕免费在线观看 | 亚洲黄网在线观看 | 美女福利视频 | 国产精品激情偷乱一区二区∴ | 青草青草视频 | 大毛片| 女人高潮娇喘声mp3 乱色视频 | 久久国产精品国语对白 | 亚州一级| 午夜视频在线观看视频 | 夜夜春很很躁夜夜躁 | 黄视频在线播放 | 日韩精品视频一区二区在线观看 | 国产 日韩 欧美 精品 | 国产在线视视频有精品 | 好吊色欧美一区二区三区视频 | 亚洲88 | 亚洲久久久久久 | 男女瑟瑟网站 | 精品国产一区在线 | 中文精品久久久久人妻不卡 | 色婷婷av一区二区三区之e本道 | 婷婷去俺也去 | 欧美激情第三页 | 一级大片免费看 | 精品久久久久久久久久久久久久久久久 | 国产色中色 | 日韩成人精品 | 999免费| 女人18毛片一区二区三区 | 国产精品羞羞答答在线 | 中文字幕成人一区 | 日本一区成人 | 国产精品成熟老女人 | 亚洲一区高清 | 91老师片黄在线观看 | 国产手机视频在线 | 天天操穴 |