標籤:通過 演算法 連結 二進位 content == sci 系統 php
PHP的加密主要有4種方法,除此之外還有一種是URL的加密和解密。希望可以對你們開發有用。
順帶,我會在後面把我整理的一整套CSS3,PHP,MYSQL的開發的筆記打包放到百度雲,有需要可以直接去百度雲下載,這樣以後你們開發就可以直接翻筆記不用百度搜那麼麻煩了。
筆記連結:http://pan.baidu.com/s/1qYdQdKK 密碼:pvj2
一、md5()加密技術
文法:
string md5(string $str[,bool $raw_output=false]):計算str的md5散列值
$str:原始字串
$raw_output:如果可選的raw_output被設定為true,那麼md5報文摘要將以16位元組長度的原始二進位格式返回。返回以32位字元十六進位數字形式返回散列值。
注意:md5是無法復原的,所以只能強制解碼。意思是加密了之後不可以通過其他函數進行解析出密碼,只能通過第三方匹配資料庫的32位字元解析出對應的原字元。
解密網站:http://www.cmd5.com/
執行個體:
<?phpheader("content-type:text/html;charset=‘utf8‘"); //設定編碼echo md5("dfa");//1b014086a5cf92eb3238d0d45c8c61a4echo "<br>";echo md5("dfa",$raw_output=true); //輸出: @????28??\?a?5oWV6K++572RLWtpbg==$str=1;echo md5(md5($str)); //可以進行多次加密if($str){echo "註冊成功,3秒鐘後跳轉到登入頁面";echo "<meta http-equiv=‘refresh‘ content=‘3;url=login.html‘/>"; //3秒後就重新整理一次頁面,然後跳轉到login.html}else{echo "註冊失敗,請重新註冊";echo "<meta http-equiv=‘refresh‘ content=‘1;url=reg.html‘/>";}?>
二、crypt密碼編譯演算法
文法:
string crypt(string $str[,string $salt]);
返回一個基於標準UNIX DES演算法或系統上其它可用的替代演算法的散列字串。
$str:需要機密的明文
$salt:加密時的幹擾串,使編碼更安全
注意:
如果加密時沒有加上這個$salt參數,將隨機產生一個幹擾串,否則重新整理加密密文不變。
執行個體:
<?phpecho crypt("imooc");echo "<hr/>";echo crypt("imooc",‘cq‘);//可以在產生的32位UNIX文前加th兩個字元echo "<hr/>";if(CRYPT_STD_DES){echo "DES標準演算法:".crypt("leohengchun","this is test");}echo "<hr/>";if(CRYPT_MD5){echo "MD5加密:".crypt("leohengchun",‘$1$cdsaf$‘); //一定要寫成$1$...}echo "<hr/>";if(CRYPT_MD5){echo "MD5加密:".crypt("leochun",‘$1$xshowsd dfds$‘);}?>
三、sha1()密碼編譯演算法
文法:
string sha1(string $str[,bool $raw_output=false]):計算字串的sha1散列值
$str:加密的字串
$raw_output:如果可選的raw_output參數被設定為TRUE,那麼sha1摘要將以20字元長度的原始格式返回,否則傳回值是一個40字元長度的十六進位數字。
返回sha1散列值字串。
執行個體:
<?phpecho sha1("leohc");echo "<hr/>";echo sha1("leohc",true); //加了ture 產生的是:n??7?_#B???[?B??9jecho "<hr/>";echo sha1("admin");echo "<hr/>";echo sha1(md5("admin",true));?>
四、URL編碼加密技術
1.urlencode(string $str):編碼URL字串
$str:要編碼的字串
傳回值:返回編碼後的字串
2.urldecode(string $str):解碼已編碼的URL字串。
$str:要解碼的字串
傳回值:返回解碼後的字串
編碼規範:此字串中除了-_.之外的所有非字母數字字元都將被替換成百分比符號(%)後跟兩位十六進位數,空格則編碼為加號(+)
3.rawurlencode(string $str):按照RFC1738對URL進行編碼
$str:要編碼的URL
傳回值:返回字串,把空格編碼為%20
4.rawurldecode(string $str):對已編碼的URL字串進行解碼
$str:要解碼的URL
傳回值:返回字串,此字串中百分比符號%後跟兩位十六進位的序列都將被替換成原義字元
執行個體:
<?php/*原碼 轉換編碼? %3F= %3D空格 +% %25& %26\ %5C*/$str="h e l lo world";echo urlencode($str);echo "<hr/>";$str="urlencode.php?username=1+3%4&imooc&king#or1=1\ ";echo urlencode($str);echo "<hr/>";$urlencode=urlencode($str);echo urldecode($urlencode); //用來解碼echo "<hr/>";if(!empty($_GET)){print_r($_GET);}echo ‘<a href="md5.php?username=imooc&king&age=2">hello</a>‘;echo "<hr/>";$username="imooc&king"; $queryString="username=".urlencode($username)."&age=2";echo "<a href=‘md5.php?{$queryString}‘>test</a>";echo "<hr/>";echo urldecode("https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=site888_3_pg&wd=%E7%99%BE%E5%BA%A6%E4%BA%91&oq=crypt&rsv_pq=fac4a3dc0002be07&rsv_t=16d5wj9i3VPccyU6g9qIm86QNweuVYvCtNwPZ8u27y%2BEOCmwYlgt7irSlH5hePjE8Ug5&rsv_enter=1&rsv_sug3=10&rsv_sug1=3&rsv_sug7=100&sug=%E7%99%BE%E5%BA%A6%E4%BA%91&rsv_n=1&bs=crypt");echo "<hr/>";echo urlencode("墨客我"); //%E5%A2%A8%E5%AE%A2%E6%88%91echo "<hr/>";echo urlencode("this is a test");//this+is+a+testecho "<hr/>";echo rawurlencode("this is test");//this%20is%20testecho "<hr/>";echo rawurlencode("this%20is%20a%20test");//this%2520is%2520a%2520testecho "<hr/>";echo rawurldecode("this+is+a+test");//this+is+a+testecho "<hr/>";echo urldecode("this+is+a+test");//this is a test?>
五、Base64資訊編碼加密技術
1.base64_encode(string $data):使用base64對data進行編碼
$data:要編碼的資料
2.base64_decode(string $data[,bool $strict=false]):對使用MIME base64編碼的資料進行解碼
$strict:如果輸入的資料超出了base64字母表,則返回false;
執行個體:
<?php$data="慕課網-kin";echo base64_encode($data);echo "<hr/>";echo base64_decode("5oWV6K++572RLWtpbg==");echo "<hr/>";//圖片的加密和轉化echo base64_encode("<img src=‘url.png‘>");//加密echo base64_decode("PGltZyBzcmM9J3VybC5wbmcnPg==");//解碼$filename="url.png";//加密$data = file_get_contents($filename);echo base64_encode($data);//加密 可以產生一串ascii碼echo "<img src=‘data:image/jpeg;base64,(圖片base64代碼)‘,alt=‘‘>";?>
六、資訊加密技術分類總結
資訊加密:
1.單項散列加密
單項散列加密技術簡介:
單向散列加密是指通過對不同輸入長度的資訊進行散列計算,得到固定長度的輸出,這個散列計算過程是單向的,即不能對固定長度的輸出進行計算而獲得輸入資訊。
salt
↓
明文----->單向散列演算法--密文--->
2.對稱散列加密
對稱式加密技術介紹:
堆成加密時指加密和解密使用的密鑰是同一個密鑰或者可以互相推算。
salt密鑰
↓ ↓
明文----->密碼編譯演算法--密文--->解密演算法--明文-->
3.非對稱散列加密
非對稱式加密和解密使用的密鑰不是同一個密鑰,其中一個對外公開,被稱作公開金鑰,另一個只有所有者知道。
加密金鑰解密密鑰
↓ ↓
明文----->密碼編譯演算法--密文--->解密演算法--明文-->
希望在開發過程中有協助。
附上筆記連結:http://pan.baidu.com/s/1qYdQdKK 密碼:pvj2
PHP的加密方法匯總