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/
實例:
<?php
header("content-type:text/html;charset='utf8'"); //設置編碼
echo md5("dfa");//1b014086a5cf92eb3238d0d45c8c61a4
echo "<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參數,將隨機生成一個干擾串,否則刷新加密密文不變。
實例:
<?php
echo 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散列值字符串。
實例:
<?php
echo sha1("leohc");
echo "<hr/>";
echo sha1("leohc",true); //加了ture 生成的是:n��7�_#B���[�BѰ�9j
echo "<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%91
echo "<hr/>";
echo urlencode("this is a test");//this+is+a+test
echo "<hr/>";
echo rawurlencode("this is test");//this%20is%20test
echo "<hr/>";
echo rawurlencode("this%20is%20a%20test");//this%2520is%2520a%2520test
echo "<hr/>";
echo rawurldecode("this+is+a+test");//this+is+a+test
echo "<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
琉憶個人博客網站:shuaiqi100.com
個人公眾號:

