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

 找回密碼
 立即註冊
快捷導航
  • 我愛av論壇BBS
  • 手機A片
  • 自拍偷拍外流區
  • 貼圖區
  • 52av裸聊室
  • 中文-中國主播
Yahoo!奇摩搜尋
熱搜: av4u論壇
Google搜尋
熱搜: av4u論壇
     
查看: 6837|回復: 0

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

[複製鏈接]
發表於 2014-12-11 21:02:57 | 顯示全部樓層 |閱讀模式
本帖最後由 IT_man 於 2014-12-11 22:31 編輯
5 D, b# t2 U1 k) N9 S
. {, N; ]3 M0 D& z  w! o& w- J; w+ d  @
由於敝網站文字加密的需要,需要複雜加密的演算法,因此選擇3DES加密。
3DES加密(Triple DES),是三重加密演算法的通稱,而3DES共有四種模式,下面介紹的是ECB模式的寫法。
首先先檢查linux是否有安裝mcrypt模組,方法如下:

* E+ O  K  z7 r( \8 W* e3 ~
  1. rpm -qa | grep php-mcrypt
複製代碼
* n) U6 Z7 I' l
或在你的網站建一個php檔,如phpinfo.php(內容如下)查看是否有mcrypt module

- U  m- Z2 J- c% @% r
  1. <?php- E2 N' D- Q) \
  2. // Show all information, defaults to INFO_ALL
    9 ?0 y) Q1 Z1 s; q# F9 d
  3. phpinfo();
    . g9 e  @; ]6 N9 q
  4. ?>
複製代碼
9 S/ ?9 t. E/ L0 \0 f
然後於browser 執行phpinfo.php,結果如下:

7 J0 v1 e& ]# U/ X* @, `- Y
1.png
' t* m7 n5 e6 ^1 _

" O7 L8 g. B0 n! _! b3 D, _0 e- q
如果沒有安裝php-mcrypt,則進行安裝(安裝方法),安裝完後再以上述兩種方法擇一加以檢查。
之後就可以撰寫加密程式如下:

) _& L  Y5 q) ^0 |+ w
  1. //加密函數撰寫/ ^: a  w0 W/ ~8 v+ N* B
  2. function encrypt($source,$toencrypt){  
    ' ?: K( `" Y3 F. V
  3. //加密用的key   1 F# f) F, o& [) Z2 R+ L# B0 _4 i5 \
  4. $key = $source;  
    0 a# N4 @6 N) M# P
  5. //使用3DES方法加密   
    , j; y4 }+ t2 X* g
  6. $encryptMethod = MCRYPT_TRIPLEDES; : _3 C& ^& }' u% E
  7. //初始化向量來增加安全性2 q9 \8 q1 g) }  e4 Z' ?
  8. $iv = mcrypt_create_iv(mcrypt_get_iv_size($encryptMethod,MCRYPT_MODE_ECB), MCRYPT_RAND);    F7 q) S; O( n" a/ c4 o; J! {
  9. //使用mcrypt_encrypt函數加密,MCRYPT_MODE_ECB表示使用ECB模式
    2 W; @% X* e- \2 @# |
  10. $encrypted_toencrypt = mcrypt_encrypt($encryptMethod, $key, $toencrypt, MCRYPT_MODE_ECB,$iv);   / y9 Q+ Y! b1 }) Y, g
  11. //回傳解密後字串
    $ A: V$ H/ `- b, u# \: U- Z/ w
  12. return base64_encode($encrypted_toencrypt);  
    1 ]3 c, o) {/ P# i
  13. }  0 w0 c/ _+ p8 ~
  14. //解密函數撰寫9 Y- O- ^6 N/ X/ `7 k9 m! ?9 v
  15. function decrypt($source,$todecrypt) {  # D& {7 d# f/ d% j
  16. //解密用的key,必須跟加密用的key一樣   
    5 l; `% [7 @: M+ Z( C7 f
  17. $key = $source;  
    : o/ f( m7 Q( a5 Q
  18. //解密前先解開base64碼
    : n1 D, J% |! T
  19. $todecrypt = base64_decode($todecrypt);
    ( ~4 Y" @: ?; O: o6 m% K. R5 C
  20. //使用3DES方法解密3 v$ U$ R5 Z$ F$ Y8 S1 x
  21. $encryptMethod = MCRYPT_TRIPLEDES;  
    8 g2 a* z: q& V6 L; a4 m: {
  22. //初始化向量來增加安全性 2 M2 l- x9 N) o* {
  23. $iv = mcrypt_create_iv(mcrypt_get_iv_size($encryptMethod,MCRYPT_MODE_ECB), MCRYPT_RAND);  9 j. d1 K- G, k' L9 j+ @1 k
  24. //使用mcrypt_decrypt函數解密,MCRYPT_MODE_ECB表示使用ECB模式  
    7 L1 M. u; a8 X2 r. u3 l( V; u
  25. $decrypted_todecrypt = mcrypt_decrypt($encryptMethod, $key, $todecrypt, MCRYPT_MODE_ECB,$iv);
    ( V. f) w( f+ z' C( y  n
  26. //回傳解密後字串
    0 B' b9 i* f) q3 t+ }# C2 w
  27. return $decrypted_todecrypt;  ; O3 g# B" z! \4 R0 |
  28. }  
    3 e, Z% n2 x6 u/ J
  29. //寫好加解密的函數之後,就可以來進行測試了
    + ?& t6 A) x; J' X9 L  u
  30. //key設定5 y% ~8 h' v4 i( l
  31. $source ="1234567890";2 A/ Q$ J* w  e. ^
  32. //要加密的字串$ o' @+ v6 ]1 T- g' P0 X* P9 ~
  33. $string ="www.av4u.co";
    3 R% w! ]6 u8 \3 d: G! Y( n* {
  34. echo "string=".$string."<br>";% l1 r$ g1 U! x9 S
  35. //進行加密並顯示加密後的字串6 J2 p( Q' B& R. k- t
  36. $encode = encrypt($source,$string);
    - S! x4 u# @% F/ R8 }0 S9 [# h+ {6 A4 R
  37. echo "encode=".$encode."<br>";; a0 L' K  P3 [4 f8 K% B
  38. //進行解密並顯示解密後的字串; L# t- e1 x$ q" G& n: I! s5 I1 a5 N1 H
  39. $decode = decrypt($source,$encode);
    & i! p, h& ~, t4 H8 F' b
  40. echo "decode=".$decode."<br>";
複製代碼

) u2 O, x& M5 @
結果如下:

& s" Z7 b1 x( _$ M2 o
1.png 0 e9 b* B9 L9 p6 B2 `: j
注意:
      如果加解密過程沒有使用base64碼的話:會造成跨網域的資料傳輸時,接收端無法解讀(是加密過後的資料傳輸錯誤造成,但是在同一網站內的加解密是沒問題的),結果如下:

5 V! j" i8 y4 d/ j! u! C0 ^
1.png
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

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

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

GMT+8, 2026-5-2 07:01 , Processed in 0.010216 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

連絡站長.廣告招商

[email protected] | Telegram:@asa00061     since 2015-01

快速回復 返回頂部 返回列表