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

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

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

[複製鏈接]
發表於 2014-12-11 21:02:57 | 顯示全部樓層 |閱讀模式
本帖最後由 IT_man 於 2014-12-11 22:31 編輯 4 o6 m9 }8 M/ w, C* E# \

5 N$ g: Q: w$ q  t9 n/ M
由於敝網站文字加密的需要,需要複雜加密的演算法,因此選擇3DES加密。
3DES加密(Triple DES),是三重加密演算法的通稱,而3DES共有四種模式,下面介紹的是ECB模式的寫法。
首先先檢查linux是否有安裝mcrypt模組,方法如下:
' i- ^6 n2 Z" H
  1. rpm -qa | grep php-mcrypt
複製代碼
$ P! i: H4 s- D3 C, i! ?" L
或在你的網站建一個php檔,如phpinfo.php(內容如下)查看是否有mcrypt module
' t* _+ A; {% n1 G
  1. <?php9 ?. j5 K3 c$ t9 z" E( R% }
  2. // Show all information, defaults to INFO_ALL
    6 }  a+ l+ `2 x% I: L8 D6 O
  3. phpinfo();) Q8 R2 a5 T2 s: [$ F9 _* w* R* U2 V
  4. ?>
複製代碼

3 e' M! K# o. m6 h; j' W9 x+ @然後於browser 執行phpinfo.php,結果如下:
$ H# l  z% a/ R# V; Q
1.png
/ V) a& q5 o1 A7 |
6 u& z  F' d* B1 r$ B- n, k- G
如果沒有安裝php-mcrypt,則進行安裝(安裝方法),安裝完後再以上述兩種方法擇一加以檢查。
之後就可以撰寫加密程式如下:

* ^) T: H( [% ?4 S( N" n+ s! Y6 U* D
  1. //加密函數撰寫
    ( e( c4 L6 e: g
  2. function encrypt($source,$toencrypt){  
    3 r# Y; e# l9 K9 z2 u
  3. //加密用的key   - N: C0 A  h% d) N
  4. $key = $source;  $ s. K' T5 H! B( D4 C. D
  5. //使用3DES方法加密   
    9 L) H1 r2 J/ H- L+ o! T: t
  6. $encryptMethod = MCRYPT_TRIPLEDES; / g; F+ w, H- E6 @* L% B! q" N
  7. //初始化向量來增加安全性
      i# \7 X  h" V- K6 n
  8. $iv = mcrypt_create_iv(mcrypt_get_iv_size($encryptMethod,MCRYPT_MODE_ECB), MCRYPT_RAND);  ; L/ Z- d9 N. [+ a
  9. //使用mcrypt_encrypt函數加密,MCRYPT_MODE_ECB表示使用ECB模式
    0 t+ Q1 r# q& \4 k0 ]7 G7 s
  10. $encrypted_toencrypt = mcrypt_encrypt($encryptMethod, $key, $toencrypt, MCRYPT_MODE_ECB,$iv);   
    / M; Q; b- w' n( x; s. x+ R+ j5 N
  11. //回傳解密後字串
    7 @) f4 o+ Z5 U: `2 t# T
  12. return base64_encode($encrypted_toencrypt);  
    & ]( @7 k4 G. }7 F
  13. }  
    ( y6 l/ X; _6 K: X
  14. //解密函數撰寫- l3 I& G2 i: Q0 }! j9 h8 T
  15. function decrypt($source,$todecrypt) {  / [0 `7 I1 ~' B  h; p; S+ g
  16. //解密用的key,必須跟加密用的key一樣   
    5 b7 K" A& x, t5 M
  17. $key = $source;  
    8 q, B- s' C( g+ s
  18. //解密前先解開base64碼
    # W; e0 n( e( U) l( C
  19. $todecrypt = base64_decode($todecrypt);& m/ Y: G) x4 b
  20. //使用3DES方法解密* j) L6 P: m  Y5 g
  21. $encryptMethod = MCRYPT_TRIPLEDES;  
    # R; }' O/ |: }3 e" H
  22. //初始化向量來增加安全性 7 r% u- D3 ?2 \3 z$ R
  23. $iv = mcrypt_create_iv(mcrypt_get_iv_size($encryptMethod,MCRYPT_MODE_ECB), MCRYPT_RAND);  
    / X- Y+ j6 v6 b
  24. //使用mcrypt_decrypt函數解密,MCRYPT_MODE_ECB表示使用ECB模式  
    6 ~# a# b% m5 J7 G) K
  25. $decrypted_todecrypt = mcrypt_decrypt($encryptMethod, $key, $todecrypt, MCRYPT_MODE_ECB,$iv);, a: K4 l2 M; M; _
  26. //回傳解密後字串* u. Q- e0 s. c" e
  27. return $decrypted_todecrypt;  ! D! T* e. b5 c6 ^- |2 \; ?
  28. }  ; `1 |: U8 m# e& I
  29. //寫好加解密的函數之後,就可以來進行測試了
    3 N% P! \  y  C4 |1 o; s2 [
  30. //key設定
    / Y% h3 `$ T1 m) i
  31. $source ="1234567890";
    7 o% f+ J, S  r% \% s7 Y) y8 v' f" n7 _
  32. //要加密的字串7 C% l4 v, a' ?# B
  33. $string ="www.av4u.co";
    " p! |* Q! J4 A7 c$ W" v7 Y8 K6 s
  34. echo "string=".$string."<br>";% h7 [* k2 t0 J4 H; |6 p4 u& B4 X' H+ r
  35. //進行加密並顯示加密後的字串
    ( Q$ g, k; k7 }: M, z  v7 f
  36. $encode = encrypt($source,$string);  i# F& n+ g9 P! N. a
  37. echo "encode=".$encode."<br>";
      U- W4 J* T7 w' r6 ?; C
  38. //進行解密並顯示解密後的字串
    % r: }; i3 A; l! u
  39. $decode = decrypt($source,$encode);* H$ r4 `' q5 T
  40. echo "decode=".$decode."<br>";
複製代碼

$ o: J" f! [" ^  B8 x) d# d  I. v) s
結果如下:

% T. S# O" b9 N! e9 G5 L5 t0 L
1.png
6 C8 z) I$ }, e; E8 S+ @
注意:
      如果加解密過程沒有使用base64碼的話:會造成跨網域的資料傳輸時,接收端無法解讀(是加密過後的資料傳輸錯誤造成,但是在同一網站內的加解密是沒問題的),結果如下:

: t0 I& Q2 D' ~. E# {0 P
1.png
回復

使用道具 舉報

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

本版積分規則

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

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

GMT+8, 2026-7-5 16:39 , Processed in 0.008382 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

連絡站長.廣告招商

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

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