首頁技術(shù)文章正文

php的加密方式

更新時間:2018-10-31 來源:黑馬程序員 瀏覽量:

  MD5加密:

  string md5 ( string $str [, bool $raw_output = false ] )

  1.md5()默認(rèn)情況下以 32 字符十六進(jìn)制數(shù)字形式返回散列值,它接受兩個參數(shù),第一個為要加密的字符串,第二個為raw_output的布爾值,默認(rèn)為false,如果設(shè)置為true,md5()則會返回原始的 16 位二進(jìn)制格式報文摘要

  2.md5()為單向加密,沒有逆向解密算法,但是還是可以對一些常見的字符串通過收集,枚舉,碰撞等方法破解

  

  $username='jellybool';

  $password='abcd';

  /*簡單地對字符串進(jìn)行md5加密*/

  echo md5($username);

  echo "

";

  echo md5($password);

  echo "

";

  /*更推薦的做法是對重要的敏感數(shù)據(jù)進(jìn)行多次加密,以防被輕易破解*/

  echo md5(md5($password));

  /*以上輸出:

  username:4f5436e5d72608fb647b691e8edcf42e

  password:7bf02cf0f4af6da4accbc73d2a175476

  password(兩次加密):864704bb35754f8cd0232cba6b91521b

  string crypt ( string $str [, string $salt ] )

  1.crypt()接受兩個參數(shù),第一個為需要加密的字符串,第二個為鹽值(就是加密干擾值,如果沒有提供,則默認(rèn)由PHP自動生成);返回散列后的字符串或一個少于 13 字符的字符串,后者為了區(qū)別鹽值。

  2.crypt()為單向加密,跟md5一樣。

  

  $password='jellybool.com';

  echo crypt($password);

  echo "

";

  echo crypt($password,"jellybool");

  //輸出:je7fNiu1KNaEs

  /*當(dāng)我們要加自定義的鹽值時,如例子中的jellybool作為第二個參數(shù)直接加入,

  Sha1加密:

  string sha1 ( string $str [, bool $raw_output = false ]

  1.跟md5很像,不同的是sha1()默認(rèn)情況下返回40個字符的散列值,傳入?yún)?shù)性質(zhì)一樣,第一個為加密的字符串,第二個為raw_output的布爾值,默認(rèn)為false,如果設(shè)置為true,sha1()則會返回原始的20 位原始格式報文摘要

  2.sha1()也是單向加密,沒有逆向解密算法

  

  $my_intro="abc";

  echo sha1($my_intro);

  //輸出:c98885c04c1208fd4d0b1dadd3bd2a9ff4d042ca

  echo "

";

  //當(dāng)然,可以將多種加密算法混合使用

  echo md5(sha1($my_intro));

  //輸出:94f25bf9214f88b1ef065a3f9b5d9874

  Urlencode加密:

  string urlencode ( string $str )

  1.一個參數(shù),傳入要加密的字符串(通常應(yīng)用于對URL的加密),

  2.urlencode為雙向加密,可以用urldecode來加密(嚴(yán)格意義上來說,不算真正的加密)

  3.返回字符串,此字符串中除了 -_. 之外的所有非字母數(shù)字字符都將被替換成百分號(%)后跟兩位十六進(jìn)制數(shù),空格則編碼為加號(+)。

  

  $a = "http abc你好";

  $b = urlencode($a);

  $c = urldecode($b);

  echo $b;

  echo '
';

  echo $c;

  ?>



作者:黑馬程序員PHP+H5全棧工程師培訓(xùn)學(xué)院
首發(fā):http://php.itheima.com

分享到:
在線咨詢 我要報名
和我們在線交談!