in header_common.htm --> -->

52AV手機A片王|52AV.ONE

 找回密碼
 立即註冊
快捷導航

Yahoo!奇摩搜尋
熱搜: 手機A片
Google奇摩搜尋
熱搜: 手機A片
     
查看: 4029|回復: 0
打印 上一主題 下一主題

[網頁伺服器] Linux下以PHP撰寫 3DES(mcrypt) 加密方法(ECB模式)[含3張圖]

[複製鏈接]
跳轉到指定樓層
樓主
發表於 2014-12-11 21:02:57 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

本帖最後由 IT_man 於 2014-12-11 22:31 編輯 % D6 u5 T: e! T

+ r- m0 \4 V) ^: ^/ P6 w
由於敝網站文字加密的需要,需要複雜加密的演算法,因此選擇3DES加密。
3DES加密(Triple DES),是三重加密演算法的通稱,而3DES共有四種模式,下面介紹的是ECB模式的寫法。
首先先檢查linux是否有安裝mcrypt模組,方法如下:

8 a) _3 {4 p- K  M, Y2 P) ^$ [3 s
  1. rpm -qa | grep php-mcrypt
複製代碼

2 t* E: N4 N# r' g或在你的網站建一個php檔,如phpinfo.php(內容如下)查看是否有mcrypt module

( V: B4 ]6 R) [& a/ p9 a% D
  1. <?php: G$ y2 y/ p4 z0 Q
  2. // Show all information, defaults to INFO_ALL
    5 g( f! H  ]5 z2 Z( ?
  3. phpinfo();- e% E9 d& W6 Z) w6 j0 \
  4. ?>
複製代碼

+ a2 a" W: X5 T6 e然後於browser 執行phpinfo.php,結果如下:
2 @  o6 A8 W" D+ e4 u, N

! ?3 B" H: x% t& g; U
, M1 b8 g* W( F$ {
如果沒有安裝php-mcrypt,則進行安裝(安裝方法),安裝完後再以上述兩種方法擇一加以檢查。
之後就可以撰寫加密程式如下:

& h. n5 R$ i1 C2 O6 ?3 c6 x0 f
  1. //加密函數撰寫  O. \4 V- Y, y7 \6 |
  2. function encrypt($source,$toencrypt){  # ?' `6 u, |. J& h
  3. //加密用的key   ) u8 f+ ?1 I: J  f. N; F. y
  4. $key = $source;  
    1 S( E6 d, [# ^
  5. //使用3DES方法加密   % Z) ?; f" A9 E6 H
  6. $encryptMethod = MCRYPT_TRIPLEDES; 1 v: H& s$ X& I! |; V
  7. //初始化向量來增加安全性
    " W7 `: i! Q- w6 z- Z  |% M
  8. $iv = mcrypt_create_iv(mcrypt_get_iv_size($encryptMethod,MCRYPT_MODE_ECB), MCRYPT_RAND);  
    + N+ R* u) s- [# R  @8 H* k$ R4 y
  9. //使用mcrypt_encrypt函數加密,MCRYPT_MODE_ECB表示使用ECB模式; Y, F+ t' g. Z% K: T
  10. $encrypted_toencrypt = mcrypt_encrypt($encryptMethod, $key, $toencrypt, MCRYPT_MODE_ECB,$iv);   , Z) x  x+ A1 m" ]
  11. //回傳解密後字串3 a) Y' E/ ^" v) |7 F% v2 X
  12. return base64_encode($encrypted_toencrypt);  
    " w" H# }. R) v5 U/ e' u) A# F
  13. }  - _4 S( D  w% t% e
  14. //解密函數撰寫7 b5 e/ X+ J' u0 O" a% i
  15. function decrypt($source,$todecrypt) {  
    6 C# O+ F) U  K4 O
  16. //解密用的key,必須跟加密用的key一樣   
    7 J. S1 p; ~/ n: @, Z1 j! w
  17. $key = $source;  . h0 ~# x( x, a) l
  18. //解密前先解開base64碼
    ' u9 E! t/ P; f* G7 j
  19. $todecrypt = base64_decode($todecrypt);! A- W4 ^% c9 Y
  20. //使用3DES方法解密
    . d3 E) U* o7 j. [# q& _: w1 l
  21. $encryptMethod = MCRYPT_TRIPLEDES;  
    0 Y9 Y' X* x# G. L
  22. //初始化向量來增加安全性
      v) k0 Z  w2 @3 _, l& m
  23. $iv = mcrypt_create_iv(mcrypt_get_iv_size($encryptMethod,MCRYPT_MODE_ECB), MCRYPT_RAND);  
    ( Q/ W9 N, B, W  I
  24. //使用mcrypt_decrypt函數解密,MCRYPT_MODE_ECB表示使用ECB模式  
    . U/ K$ @+ K& u  e9 i# h0 i$ M& O
  25. $decrypted_todecrypt = mcrypt_decrypt($encryptMethod, $key, $todecrypt, MCRYPT_MODE_ECB,$iv);
    5 |7 [* q& {, \
  26. //回傳解密後字串
    # M2 p6 V: @( |
  27. return $decrypted_todecrypt;  
    3 N8 |# y, h+ g4 u
  28. }  ) @" c4 \# ]3 M" T' y5 P& M5 q
  29. //寫好加解密的函數之後,就可以來進行測試了  R% l" G, q! V6 Y9 i& y
  30. //key設定
    1 N4 T6 S/ @, x% }6 w2 i0 a0 [& }
  31. $source ="1234567890";
    % W, b4 \$ s. y% a
  32. //要加密的字串' W! R6 ?6 [/ b, p- B6 i
  33. $string ="www.av4u.co";
    ' J( j6 G; p  J% d' ^5 l2 q
  34. echo "string=".$string."<br>";! u; n1 O/ ~# N  B( r. ?* x
  35. //進行加密並顯示加密後的字串2 i: O& I$ P$ C9 ]9 V+ _. g' P/ I
  36. $encode = encrypt($source,$string);
    9 c+ H& D$ A7 \7 O( }: U3 D& P6 i! [
  37. echo "encode=".$encode."<br>";
    & q. K* p2 l+ n8 q* y& y
  38. //進行解密並顯示解密後的字串
    , N* X( v0 [6 m4 ~
  39. $decode = decrypt($source,$encode);$ i8 M- C8 M1 X& r8 k& n7 }" B
  40. echo "decode=".$decode."<br>";
複製代碼
) j9 A: d# c, N% T# w# U# e
結果如下:

  R% y4 @7 C+ @* |

1 x/ }1 u& ]! |: s
注意:
      如果加解密過程沒有使用base64碼的話:會造成跨網域的資料傳輸時,接收端無法解讀(是加密過後的資料傳輸錯誤造成,但是在同一網站內的加解密是沒問題的),結果如下:
3 J  R5 ?; l2 L/ I% v
-->
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則


-->

聚BT福利

本區塊內容依據『電腦網路內容分級處理辦法』為限制級網站,限定年滿18歲以上或達當地國家法定年齡人士方可進入,且願接受本站各項條款,未滿18歲 謝絕進入瀏覽。為防範未滿18歲之未成年網友瀏覽網路上限制級內容的圖文資訊,建議您可進行網路內容分級組織ICRA分級服務的安裝與設定。 (為還給愛護 本站的網友一個純淨的論壇環境,本站設有管理員)

QQ|小黑屋|手機板|52AV手機A片王

GMT+8, 2024-10-7 00:14 , Processed in 0.077661 second(s), 19 queries .

連絡站長.廣告招商

[email protected] | QQ:2405733034     since 2015-01

裸聊妹 快速回復 返回頂部 返回列表