in header_common.htm --> -->

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

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

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

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

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

本帖最後由 IT_man 於 2014-12-11 22:31 編輯 ( s" m" v- H7 v8 H9 G% C
5 P3 X1 j- ~( ?5 v) f
由於敝網站文字加密的需要,需要複雜加密的演算法,因此選擇3DES加密。
3DES加密(Triple DES),是三重加密演算法的通稱,而3DES共有四種模式,下面介紹的是ECB模式的寫法。
首先先檢查linux是否有安裝mcrypt模組,方法如下:
0 ?: b/ E8 Q! V% f
  1. rpm -qa | grep php-mcrypt
複製代碼

+ y8 ^6 x  Q( P6 A  f! ]8 J或在你的網站建一個php檔,如phpinfo.php(內容如下)查看是否有mcrypt module

. q, h7 G) n3 ^# O" y- ]
  1. <?php
    3 M: _- A/ `1 M/ u! b1 H2 @
  2. // Show all information, defaults to INFO_ALL/ h( j2 b* n, |& s
  3. phpinfo();; W/ r( y3 q$ H( k3 \# V
  4. ?>
複製代碼
4 E: L1 S' ~; U) [, U* |3 Z, K
然後於browser 執行phpinfo.php,結果如下:

4 C  @$ u9 @7 G- B9 k2 ~

% I+ g" M! n5 V: Y

6 Q2 n! V) m( G* j
如果沒有安裝php-mcrypt,則進行安裝(安裝方法),安裝完後再以上述兩種方法擇一加以檢查。
之後就可以撰寫加密程式如下:

$ \) g* K9 B% }" C
  1. //加密函數撰寫/ c/ \3 `% h& P$ N6 \* L$ }4 [
  2. function encrypt($source,$toencrypt){  $ X( K' R2 @* i6 v  I  G
  3. //加密用的key   
    ; p8 [6 [3 |7 A6 J
  4. $key = $source;  
    " D7 I0 T$ x: i5 \( V% {
  5. //使用3DES方法加密   & _9 ]* w4 ], [# H
  6. $encryptMethod = MCRYPT_TRIPLEDES; % g2 @5 S% b6 s9 z1 x4 a
  7. //初始化向量來增加安全性
    3 ~. p/ ]  S/ O) ~' }
  8. $iv = mcrypt_create_iv(mcrypt_get_iv_size($encryptMethod,MCRYPT_MODE_ECB), MCRYPT_RAND);  & Z3 J" g4 k# n0 M
  9. //使用mcrypt_encrypt函數加密,MCRYPT_MODE_ECB表示使用ECB模式, \# a) n5 J2 k7 W% U
  10. $encrypted_toencrypt = mcrypt_encrypt($encryptMethod, $key, $toencrypt, MCRYPT_MODE_ECB,$iv);   
    % Q, [; Z* n( Z% h
  11. //回傳解密後字串
    : |$ q/ Q6 }6 @$ V: ?
  12. return base64_encode($encrypted_toencrypt);  : j1 A1 U9 o, J2 \0 \
  13. }  8 }5 D/ P# Q2 O4 H+ ?# g. J9 F
  14. //解密函數撰寫" o  I5 K3 k* j$ ^; r
  15. function decrypt($source,$todecrypt) {  & C) I) [, F3 t" ]3 z7 q
  16. //解密用的key,必須跟加密用的key一樣   " Y- x5 }  |4 M8 t: t9 {0 b$ k
  17. $key = $source;  0 W/ \: [7 I4 U, y
  18. //解密前先解開base64碼& M% f' a8 T' r$ d& L
  19. $todecrypt = base64_decode($todecrypt);: F' a$ u% r6 V2 x. `/ c
  20. //使用3DES方法解密
    , a9 T0 G; X$ R
  21. $encryptMethod = MCRYPT_TRIPLEDES;  
    9 v2 Y5 b1 G, F& `' u
  22. //初始化向量來增加安全性
    - h6 F3 t. d5 ~0 Y
  23. $iv = mcrypt_create_iv(mcrypt_get_iv_size($encryptMethod,MCRYPT_MODE_ECB), MCRYPT_RAND);  
    & t8 n& g5 a/ R* _1 D( j* t
  24. //使用mcrypt_decrypt函數解密,MCRYPT_MODE_ECB表示使用ECB模式  
    1 |: i; I' Q$ p5 i! i; K) M
  25. $decrypted_todecrypt = mcrypt_decrypt($encryptMethod, $key, $todecrypt, MCRYPT_MODE_ECB,$iv);/ g9 w1 m+ N* z% h* J$ o, w
  26. //回傳解密後字串4 p$ r3 `% _3 c0 ?
  27. return $decrypted_todecrypt;  
    2 Y' F  b* l: L0 a. g1 D
  28. }  # N+ X# \) w3 O  O
  29. //寫好加解密的函數之後,就可以來進行測試了2 ]# R9 I, x( ~$ M+ p
  30. //key設定  g- \/ n# K, g2 H  F) O
  31. $source ="1234567890";
    / F! y  k+ {: x8 L( j$ g1 D
  32. //要加密的字串
    1 }& p/ A1 b0 F) E
  33. $string ="www.av4u.co";) O( g/ e6 F; O6 _. G% k
  34. echo "string=".$string."<br>";, R) ]9 ^4 B4 P7 ]0 [3 c2 D6 m
  35. //進行加密並顯示加密後的字串$ w  t3 u$ G$ n/ y: M
  36. $encode = encrypt($source,$string);
    2 o# z$ e+ q0 H8 Z
  37. echo "encode=".$encode."<br>";$ `' x) |6 ^" C& v$ a, h
  38. //進行解密並顯示解密後的字串
    ! c- _0 }! {4 J0 m5 y2 H, W8 [
  39. $decode = decrypt($source,$encode);
    ; E& j9 K% V2 N: C) K9 k5 f
  40. echo "decode=".$decode."<br>";
複製代碼
& r4 p# c  h- G2 Z' S* j& z  q
結果如下:

" L0 L; i0 D* h6 F
8 a2 u! j1 i7 L" V
注意:
      如果加解密過程沒有使用base64碼的話:會造成跨網域的資料傳輸時,接收端無法解讀(是加密過後的資料傳輸錯誤造成,但是在同一網站內的加解密是沒問題的),結果如下:

# T) U8 B# |2 ]2 a% s. R/ N, t+ e
-->
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則


-->

聚BT福利

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

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

GMT+8, 2024-10-4 01:47 , Processed in 0.079263 second(s), 19 queries .

連絡站長.廣告招商

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

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