in header_common.htm --> -->

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

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

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

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

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

本帖最後由 IT_man 於 2014-12-11 22:31 編輯
' R  K% ^& F" j% M1 x5 @. y
2 J+ s& q- w4 G. {4 S( r
由於敝網站文字加密的需要,需要複雜加密的演算法,因此選擇3DES加密。
3DES加密(Triple DES),是三重加密演算法的通稱,而3DES共有四種模式,下面介紹的是ECB模式的寫法。
首先先檢查linux是否有安裝mcrypt模組,方法如下:
. d& N" k: N# e2 [$ l" S
  1. rpm -qa | grep php-mcrypt
複製代碼
* u; R9 s& ]1 {/ D. |' h
或在你的網站建一個php檔,如phpinfo.php(內容如下)查看是否有mcrypt module
! Q/ Q1 M; [4 }' c) i
  1. <?php
    7 ?$ D& {: j1 @
  2. // Show all information, defaults to INFO_ALL
    1 ~7 d4 l+ ?$ o; {/ B
  3. phpinfo();
    ; X2 k4 U7 B% N( m! Z
  4. ?>
複製代碼

5 W; w' W7 h' s3 B2 ^  D然後於browser 執行phpinfo.php,結果如下:

- [' U; \7 Y! e/ G9 W' y; }& G
9 @: D- O- v6 q( K5 P% i6 H

, j- x) o8 A* |- q) y
如果沒有安裝php-mcrypt,則進行安裝(安裝方法),安裝完後再以上述兩種方法擇一加以檢查。
之後就可以撰寫加密程式如下:

9 s$ [3 Z# W" Z+ \
  1. //加密函數撰寫
    $ h4 q% l* W$ i$ v& a
  2. function encrypt($source,$toencrypt){  
    9 g2 m) x# @5 q" E) y- q9 G/ p
  3. //加密用的key   
    4 t# u, n* M: r3 B2 P
  4. $key = $source;  4 Y- m7 X& d6 c! g1 v
  5. //使用3DES方法加密   
    4 r% W! h  a* E+ o
  6. $encryptMethod = MCRYPT_TRIPLEDES; 6 i- d3 x' Y' E; N( V
  7. //初始化向量來增加安全性
    8 @' D( L) ?7 j$ h" Q8 e
  8. $iv = mcrypt_create_iv(mcrypt_get_iv_size($encryptMethod,MCRYPT_MODE_ECB), MCRYPT_RAND);  
    & J% m4 A/ L; N# v
  9. //使用mcrypt_encrypt函數加密,MCRYPT_MODE_ECB表示使用ECB模式
    3 \1 ~6 L) S. F) }* k; r6 L: c6 n
  10. $encrypted_toencrypt = mcrypt_encrypt($encryptMethod, $key, $toencrypt, MCRYPT_MODE_ECB,$iv);   
    / }) u! b" D! e$ e+ N1 U
  11. //回傳解密後字串2 T$ h1 v, L& [0 Y# L
  12. return base64_encode($encrypted_toencrypt);  ( b/ X, j/ T2 N( L2 E# S
  13. }  
    6 O! _0 f0 u  s+ d
  14. //解密函數撰寫2 Q' l2 W4 X" [7 A0 H
  15. function decrypt($source,$todecrypt) {  
    + P6 J2 Z; \' M% v6 _
  16. //解密用的key,必須跟加密用的key一樣   2 \1 n9 P- m& d3 s3 o, ]
  17. $key = $source;  
    $ J. `0 ^1 o1 Y6 {6 O7 @( I
  18. //解密前先解開base64碼
    : d. N& k, |' N
  19. $todecrypt = base64_decode($todecrypt);
    , m. a& U; \( s+ A) j. F) S: a8 a6 z$ ?
  20. //使用3DES方法解密
    . Q) Y  L; B9 C7 ]. G0 G
  21. $encryptMethod = MCRYPT_TRIPLEDES;  
    9 G9 K! u2 \9 J6 x2 U0 k) V  i" R
  22. //初始化向量來增加安全性 ( e) T( t' n$ W) [' c( U
  23. $iv = mcrypt_create_iv(mcrypt_get_iv_size($encryptMethod,MCRYPT_MODE_ECB), MCRYPT_RAND);  
    . L! }- p3 P6 {/ {2 Y7 U
  24. //使用mcrypt_decrypt函數解密,MCRYPT_MODE_ECB表示使用ECB模式    H. \, l' ]. C5 ?0 `- K
  25. $decrypted_todecrypt = mcrypt_decrypt($encryptMethod, $key, $todecrypt, MCRYPT_MODE_ECB,$iv);/ p4 y7 D$ |. y6 x, Z" P
  26. //回傳解密後字串7 [, n3 R1 ^( T6 v* p6 {- i
  27. return $decrypted_todecrypt;  
    1 W; K1 y2 U1 E/ ?- R( B6 K0 m
  28. }  
    8 E% ?$ U5 W7 v0 }. p
  29. //寫好加解密的函數之後,就可以來進行測試了) P) X& E1 ?8 I* @+ S3 F" w
  30. //key設定2 V- I2 ^2 r9 `5 t3 Z1 q
  31. $source ="1234567890";: P9 X3 S- F9 d5 ~  i# O5 R
  32. //要加密的字串* c* K& y( r  V
  33. $string ="www.av4u.co";7 A0 T9 j4 ?% q' f8 s
  34. echo "string=".$string."<br>";
    ; t  N# o0 v3 ^8 C' A
  35. //進行加密並顯示加密後的字串- U4 |# _/ F' m2 W  A6 H' V' ]' n
  36. $encode = encrypt($source,$string);
    5 F( X9 L: ], D8 F2 F9 m
  37. echo "encode=".$encode."<br>";  ]2 n( v2 X- f! [
  38. //進行解密並顯示解密後的字串2 }) O9 j; O) A+ \# j
  39. $decode = decrypt($source,$encode);
    : I$ z# e: q; }
  40. echo "decode=".$decode."<br>";
複製代碼
: b$ S; P+ G  J4 {8 o' H7 \
結果如下:

2 G# Y  n7 k. J6 d

/ Q% Y3 [$ ~2 N5 K
注意:
      如果加解密過程沒有使用base64碼的話:會造成跨網域的資料傳輸時,接收端無法解讀(是加密過後的資料傳輸錯誤造成,但是在同一網站內的加解密是沒問題的),結果如下:

, |2 ^- l) v3 p& n# }9 l
-->
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則


-->

聚BT福利

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

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

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

連絡站長.廣告招商

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

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