国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > PHP > 正文

PHP加密技術(shù)的簡(jiǎn)單實(shí)現(xiàn)

2024-05-04 23:49:34
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

一、MD5加密

直接干,這里以一個(gè)登錄頁(yè)面為例:

<?phprequire_once 'config/database.config.php';$act=$_REQUEST['act'];$username=$_POST['username'];$password=md5($_POST['password']);if ($act=='reg') {  $sql="INSERT INTO user(username,password) VALUES('{$username}','{$password}')";  $result=mysqli_query($link, $sql);    if ($result) {    echo "Success";    echo "<meta http-equiv='refresh' content='1;url=login.html'/>";  }else {    echo "Failure!";    echo "<meta http-equiv='refresh' content='1;url=reg.html'/>";  }}elseif ($act=='login') {  $sql="SELECT * FROM user WHERE username='{$username}' AND password='{$password}'";  $result=mysqli_query($link, $sql);  $validate=mysqli_fetch_array($result);  //var_dump($validate);  if ($validate) {    echo "success";    echo "<meta http-equiv='refresh' content='1;url=http://www.baidu.com'/>";  }else {    echo "failure";    echo "<meta http-equiv='refresh' content='1;url=login.html'/>";  }}

主要就是記得比對(duì)的時(shí)候也使用MD5,所以存在數(shù)據(jù)庫(kù)中的時(shí)候就是密碼保存的了

mysql> SELECT * FROM user;+----+----------+----------------------------------+| id | username | password             |+----+----------+----------------------------------+| 1 | 123   | d41d8cd98f00b204e9800998ecf8427e || 2 | 123   | 5e12a8f9c9e959060fdcaea165393039 || 3 |     | d41d8cd98f00b204e9800998ecf8427e || 4 | root   | 202cb962ac59075b964b07152d234b70 || 5 | root   | 0c51f0ba4316a5c844397f69effe2d01 |+----+----------+----------------------------------+

二、Crypt加密算法

同樣是一個(gè)單向加密算法,無(wú)法由密文直接得到明文密碼(和MD5一樣);

語(yǔ)法:string crypt(string $str[,string $salt]),$str為加密明文,$salt為干擾項(xiàng),可以理解為椒鹽噪聲;

/** * Crypt */echo crypt('shit');echo "<hr/>";echo crypt('shit','im');echo "<hr/>";if (CRYPT_EXT_DES) {  echo crypt('shit','this is a test');}echo "<hr/>";if (CRYPT_MD5) {  echo crypt('shit','$1$this is a test$');}

基本沒(méi)什么要說(shuō)的,就一點(diǎn),crypt的加密有不同的加密算法,默認(rèn)的是MD5加密,但是若是不給定“鹽值”,每次刷新,都是不一樣的結(jié)果;

然后可以指定鹽值,具體參見(jiàn)手冊(cè),每個(gè)算法的鹽值長(zhǎng)度是不一樣的,比如上述的DES和MD5,結(jié)果如下

1223b8c30a347321299611f873b449ad$1$ed0.Ph..$fPbfhSOMLyNdtZn9krT8X/im37cLeO/JPaQth12A1V7QCns.$1$this is $Bu9FE8Y8oGnIbftjDA4ez0

DES只能取兩位,而MD5取了8位;

用法上也差不多,記得輸入鹽值才好。

三、Sha1

同樣是單向加密,不可破解(但網(wǎng)上的辦法都是類似數(shù)據(jù)庫(kù)一樣的“偽暴力”破解);

與MD5的區(qū)別在于返回更長(zhǎng)的(40位)16進(jìn)制的數(shù)串(MD5是32位);

/** * Sha1 */echo "<hr/>";echo sha1('shit');echo "<hr/>";echo sha1('shit',true);  echo "<hr/>";echo sha1('admin');

所以,一般加密保存,不要單獨(dú)使用這些密碼,不如這樣子混合使用

echo "<hr/>";echo sha1(sha1('admin',true));echo "<hr/>";echo sha1(md5('admin'));

等于是加密外面又自行進(jìn)行了簡(jiǎn)單的加密!!

四、URL編碼加密

對(duì)地址欄信息進(jìn)行加密;

雙向,urlencode和urldecode;

/** * URL編碼加密 */$str="this is a test";$result=urlencode($str);echo $result;echo "<hr/>";echo urldecode($result);echo "<hr/>";$str="login.php?username=shit&action=act%3 hape#123//";echo urlencode($str);echo "<hr/>";echo "<a href='index.php?username=shit&gender=male'>Shit Login</a>";print_r($_GET);echo "<hr/>";//所以地址欄進(jìn)行一下編碼,一方面是保密,一方面是處理特殊情況//比如username&shit是一個(gè)整體,不編碼的話,瀏覽器是看不出的echo "<a href='index.php?username=username&shit&gender=male'>Shit Login2</a>";print_r($_GET);echo "<hr/>";$str="username&shit";$str2="username=".urlencode($str)."&gender=".urlencode("male");echo "<a href='index.php?".$str2."'>Shit Login3</a>";print_r($_GET);echo "<hr/>";//baidu example//https://www.baidu.com/s?ie=utf8&wd=url%E7%BC%96%E7%A0%81%E5%8A%A0%E5%AF%86&tn=87048150_dg//search url編碼

結(jié)果如下

this+is+a+testthis is a testlogin.php%3Fusername%3Dshit%26action%3Dact%253+hape%23123%5CShit LoginArray ( [username] => username&shit [gender] => male ) Shit Login2Array ( [username] => username&shit [gender] => male ) Shit Login3Array ( [username] => username&shit [gender] => male ) 

所以功能就是:地址欄更加安全,不再明文傳輸,另一個(gè)解決特殊情況的傳遞

五、Base64編碼加密

其實(shí)base64不是加密技術(shù),只不過(guò)他會(huì)對(duì)data進(jìn)行base64的編碼,也可以看做是一種加密技術(shù);

/** * Base64 */$data="I am king";echo base64_encode($data);echo "<hr/>";echo base64_decode(base64_encode($data));echo "<hr/>";echo base64_encode("中文測(cè)試");echo "<hr/>";// echo base64_decode("R0lGODlhAQABAIAAAP///wAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==");$data=file_get_contents("0.jpg");echo base64_encode($data);

 等于說(shuō)是對(duì)內(nèi)容進(jìn)行加密

總結(jié)

單項(xiàng)散列加密:得到固定長(zhǎng)度的輸出,是單向的;

對(duì)稱散列加密:使用同一把密鑰進(jìn)行加密解密,可以相互推算;(算法簡(jiǎn)單,效率高,開銷小,適合對(duì)大量數(shù)據(jù)進(jìn)行加密)DES等

非對(duì)稱加密技術(shù):密鑰不一樣,公鑰和私鑰之分

以上這篇PHP加密技術(shù)的簡(jiǎn)單實(shí)現(xiàn)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到PHP教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 隆回县| 万山特区| 海安县| 内江市| 唐山市| 双鸭山市| 炎陵县| 湖口县| 鹿邑县| 靖宇县| 周至县| 西峡县| 云林县| 武夷山市| 皋兰县| 鹿泉市| 延寿县| 上虞市| 东兴市| 南郑县| 闻喜县| 友谊县| 汤阴县| 绥江县| 黄梅县| 内乡县| 黔南| 鄂温| 抚松县| 潢川县| 沂南县| 阜城县| 台北市| 辽宁省| 蒲江县| 共和县| 汉中市| 中山市| 虞城县| 航空| 建水县|