in header_common.htm --> -->

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

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

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

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

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

本帖最後由 IT_man 於 2014-12-11 22:31 編輯
$ l0 F. ~0 a  P0 a* l: G  g$ ~% ^4 s9 @; D
由於敝網站文字加密的需要,需要複雜加密的演算法,因此選擇3DES加密。
3DES加密(Triple DES),是三重加密演算法的通稱,而3DES共有四種模式,下面介紹的是ECB模式的寫法。
首先先檢查linux是否有安裝mcrypt模組,方法如下:
, B4 l7 w' j, |
  1. rpm -qa | grep php-mcrypt
複製代碼
7 ?) Z: X2 [8 v( ]
或在你的網站建一個php檔,如phpinfo.php(內容如下)查看是否有mcrypt module

9 P4 e$ F! ^! y% B% a& q6 n
  1. <?php
      B3 I# n; G5 l5 F
  2. // Show all information, defaults to INFO_ALL' I& p2 U- \" [2 G9 Y% H/ ~2 m
  3. phpinfo();) n6 C; h$ l3 h7 l- ~& o" \
  4. ?>
複製代碼
- F& L  \& G' A- A! L, t# v. p
然後於browser 執行phpinfo.php,結果如下:

7 s* c% V/ O* ^( M, z- J
1 ?: ?: S0 t& N/ B  Q0 y1 p$ R3 R4 r
. E& e0 d& s; G
如果沒有安裝php-mcrypt,則進行安裝(安裝方法),安裝完後再以上述兩種方法擇一加以檢查。
之後就可以撰寫加密程式如下:

5 @/ P6 M2 e: ?5 _% s3 e
  1. //加密函數撰寫
    4 D7 Q1 u4 ~) B1 Z
  2. function encrypt($source,$toencrypt){  " x0 R( L7 q- m7 O  ?" I) F
  3. //加密用的key   
    5 H1 C! d7 \  f
  4. $key = $source;  ; ?( r6 p, N- M* b
  5. //使用3DES方法加密   8 E8 R$ L" @  c5 t2 C
  6. $encryptMethod = MCRYPT_TRIPLEDES; # P8 t6 o8 O+ P. _% q
  7. //初始化向量來增加安全性
    % c' t# |& O5 e' y
  8. $iv = mcrypt_create_iv(mcrypt_get_iv_size($encryptMethod,MCRYPT_MODE_ECB), MCRYPT_RAND);  + w8 R* R! v* ?+ }. ^% z
  9. //使用mcrypt_encrypt函數加密,MCRYPT_MODE_ECB表示使用ECB模式) e, t8 @: J8 \+ e
  10. $encrypted_toencrypt = mcrypt_encrypt($encryptMethod, $key, $toencrypt, MCRYPT_MODE_ECB,$iv);   
    ' @5 Q( q; H* [. K: `
  11. //回傳解密後字串
    6 ~; m" i% l) w. r" y3 ]* ~' O0 c
  12. return base64_encode($encrypted_toencrypt);  / V6 U! [: F2 Q# X4 q% P
  13. }  
    4 `9 z( F4 T& j+ \' I0 Q
  14. //解密函數撰寫
    $ u9 e  `, Y& r( W7 Q/ }
  15. function decrypt($source,$todecrypt) {  # }2 ~( m) B: Z3 @: c4 E, ~' N
  16. //解密用的key,必須跟加密用的key一樣   1 D# S/ T6 @2 o3 c, q5 {- n4 B
  17. $key = $source;  
    1 E$ V3 p+ w: p; M& Q) H
  18. //解密前先解開base64碼  V/ W0 d/ f& u! A2 m, _0 S
  19. $todecrypt = base64_decode($todecrypt);
    ; m2 x0 V" t8 n9 W
  20. //使用3DES方法解密
    8 I8 G- h' ~2 H) x& y
  21. $encryptMethod = MCRYPT_TRIPLEDES;  
    ( ^5 D0 a5 F- V) t# T% U% |
  22. //初始化向量來增加安全性   U* ?: N# W2 ^! E  G- ~  C
  23. $iv = mcrypt_create_iv(mcrypt_get_iv_size($encryptMethod,MCRYPT_MODE_ECB), MCRYPT_RAND);  
    + I+ h! c. z, b' \5 L$ [
  24. //使用mcrypt_decrypt函數解密,MCRYPT_MODE_ECB表示使用ECB模式  9 p' \7 P$ j; M, O
  25. $decrypted_todecrypt = mcrypt_decrypt($encryptMethod, $key, $todecrypt, MCRYPT_MODE_ECB,$iv);
    ) T+ R- u) P" V$ i0 I  x) X5 q
  26. //回傳解密後字串
    6 e2 k. O+ v& S! n
  27. return $decrypted_todecrypt;  
    , A1 C& y5 R' F4 ?5 f5 g  T
  28. }  3 K0 g1 N4 O( W( h- f* i4 [
  29. //寫好加解密的函數之後,就可以來進行測試了6 m0 V: a9 c  }: A) J
  30. //key設定
    ' s6 D* f, R( B' C1 a: C
  31. $source ="1234567890";1 ]: ^3 m9 z; c& {5 G
  32. //要加密的字串- K8 D; j: L( u  D0 ]3 Q
  33. $string ="www.av4u.co";4 ?; b- b* k8 V+ T) ~7 F3 }
  34. echo "string=".$string."<br>";
    ; V9 @1 r. W7 p9 X# a. _" |1 n
  35. //進行加密並顯示加密後的字串, _$ L1 O* a7 V2 c  c2 z
  36. $encode = encrypt($source,$string);
    ( G" v% b6 S6 U6 s- @
  37. echo "encode=".$encode."<br>";3 _9 E7 A* M6 n, A" t$ b2 C
  38. //進行解密並顯示解密後的字串
    & @& N0 Y2 m2 l7 S' g" }; \+ Z: `
  39. $decode = decrypt($source,$encode);! a7 f$ W5 h1 ~! T
  40. echo "decode=".$decode."<br>";
複製代碼

5 n3 f; r. Y! s3 J) j
結果如下:
. i! n( K0 @- s* m  F" x7 H
; V8 }, F: N% }7 P. W- d) d$ l
注意:
      如果加解密過程沒有使用base64碼的話:會造成跨網域的資料傳輸時,接收端無法解讀(是加密過後的資料傳輸錯誤造成,但是在同一網站內的加解密是沒問題的),結果如下:

) L7 y( w: f' J( L- j7 F# g
-->
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則


-->

聚BT福利

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

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

GMT+8, 2024-10-3 10:22 , Processed in 0.082358 second(s), 19 queries .

連絡站長.廣告招商

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

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