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

 找回密碼
 立即註冊
查看: 1837|回復: 0

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

[複製鏈接]
發表於 2014-12-11 21:02:57 | 顯示全部樓層 |閱讀模式
tid=166& 本帖最後由 IT_man 於 2014-12-11 22:31 編輯 " Q! T9 [* h* c! _! Z# d2 L  M4 o% e
6 I) @+ v& F2 |8 J: l
由於敝網站文字加密的需要,需要複雜加密的演算法,因此選擇3DES加密。
3DES加密(Triple DES),是三重加密演算法的通稱,而3DES共有四種模式,下面介紹的是ECB模式的寫法。
首先先檢查linux是否有安裝mcrypt模組,方法如下:
& m8 L& q2 H9 `7 v1 a3 H
  1. rpm -qa | grep php-mcrypt
複製代碼
: l! N- Q8 Y& b' \) {
或在你的網站建一個php檔,如phpinfo.php(內容如下)查看是否有mcrypt module
- M9 ^: S& {9 Z9 H  ?- K* i" j! [
  1. <?php
      N7 v; T: ~& E1 ?# L4 ?4 J2 U- p
  2. // Show all information, defaults to INFO_ALL
    9 r# P" l0 q: l. j
  3. phpinfo();9 Q2 a1 B* w" ?! \3 ^, B, W
  4. ?>
複製代碼

( l( j5 J) @, Q: R+ U; E. q然後於browser 執行phpinfo.php,結果如下:
  q- e: B$ Q; r, ~8 T5 b7 @
1.png 1 u1 k! x5 ]4 K2 b% N: Q
4 p* q8 t& d4 N( Y8 [1 L) w! a9 H: M
如果沒有安裝php-mcrypt,則進行安裝(安裝方法),安裝完後再以上述兩種方法擇一加以檢查。
之後就可以撰寫加密程式如下:
' q: N. T/ l$ M3 H0 H  o
  1. //加密函數撰寫
    6 K! F/ a6 a# x; L
  2. function encrypt($source,$toencrypt){  
      Q$ E" D6 p* l- l
  3. //加密用的key     m: [. U) o: W" @! {; R9 c
  4. $key = $source;  4 t6 {. c+ o, C( Q5 N8 h  W- \
  5. //使用3DES方法加密   
    / k) ~& J, [$ x7 D2 h! s
  6. $encryptMethod = MCRYPT_TRIPLEDES; + y0 W# D* B# N8 B/ J1 R3 Q6 Q
  7. //初始化向量來增加安全性
    % N6 y/ A7 m. Q5 _4 H5 d, [$ r
  8. $iv = mcrypt_create_iv(mcrypt_get_iv_size($encryptMethod,MCRYPT_MODE_ECB), MCRYPT_RAND);  
    ! _# b0 H1 v$ R8 A; h  P& c2 V
  9. //使用mcrypt_encrypt函數加密,MCRYPT_MODE_ECB表示使用ECB模式
    : q3 q2 t7 ]8 H) P
  10. $encrypted_toencrypt = mcrypt_encrypt($encryptMethod, $key, $toencrypt, MCRYPT_MODE_ECB,$iv);   4 q. l$ o9 T' |6 A; d$ u9 ^! m! B
  11. //回傳解密後字串6 u* [  ]9 N! N& L$ U8 K
  12. return base64_encode($encrypted_toencrypt);  
    . Z9 H! W8 b. F: c( b: k- i
  13. }  
    $ M$ E. t: k2 y' N+ ^
  14. //解密函數撰寫8 `6 C( t4 t; u3 ^
  15. function decrypt($source,$todecrypt) {  ! v4 T2 V1 \! Y4 A& n
  16. //解密用的key,必須跟加密用的key一樣   " t8 E6 l% G5 X2 {9 C
  17. $key = $source;  
    * x  g" E* i; }$ q, e; k1 k
  18. //解密前先解開base64碼
    : M' c) v7 [6 ~2 ?# `7 _1 h) ^
  19. $todecrypt = base64_decode($todecrypt);
    9 B0 s: s8 I) {5 m6 g1 Y, s
  20. //使用3DES方法解密7 `3 J- D3 F/ l! T, I  X: I  v* |
  21. $encryptMethod = MCRYPT_TRIPLEDES;  % G$ ~$ F$ C+ U$ e4 A* m* h. g
  22. //初始化向量來增加安全性
    ( e  x1 m9 m6 K2 \9 _( k$ [
  23. $iv = mcrypt_create_iv(mcrypt_get_iv_size($encryptMethod,MCRYPT_MODE_ECB), MCRYPT_RAND);  
    4 P3 X1 W9 U9 z& Y+ A6 r
  24. //使用mcrypt_decrypt函數解密,MCRYPT_MODE_ECB表示使用ECB模式  1 w* K7 N* a: w# y6 ^6 i2 s: s  ]
  25. $decrypted_todecrypt = mcrypt_decrypt($encryptMethod, $key, $todecrypt, MCRYPT_MODE_ECB,$iv);
    7 u( h& S" C2 F& b2 i4 k
  26. //回傳解密後字串
    ) }2 z% ?  u2 M% D4 o+ o  z/ K
  27. return $decrypted_todecrypt;  " Y" @0 U: _) y5 M
  28. }  & ]0 [. _( q$ B3 q/ P
  29. //寫好加解密的函數之後,就可以來進行測試了, t- Y0 [# z6 m
  30. //key設定0 `, K, C$ [7 _1 M- Y% a
  31. $source ="1234567890";' n) c' ?$ k+ f+ G) s: `
  32. //要加密的字串
    ) k: c7 E* ^. Q) l
  33. $string ="www.av4u.co";
    , K4 B( ]: s/ m5 h/ a% y' L
  34. echo "string=".$string."<br>";" Q# p  \7 G3 X' T& K7 [. C; [
  35. //進行加密並顯示加密後的字串2 U' n* c- N& P( X9 `
  36. $encode = encrypt($source,$string);
    / M6 d5 N  t  l- @- j4 c
  37. echo "encode=".$encode."<br>";; Q/ V4 Y4 q' _. L5 @
  38. //進行解密並顯示解密後的字串7 s9 ^" `$ }5 o2 Y' H. Q& K. `6 s
  39. $decode = decrypt($source,$encode);
    " M; r) m  ]* ?5 e
  40. echo "decode=".$decode."<br>";
複製代碼

" I5 }" Z0 ?5 A. W
結果如下:

/ a2 f8 o& w% B# U. M
1.png
8 G( R/ A0 j2 {/ E& `: h/ @* F
注意:
      如果加解密過程沒有使用base64碼的話:會造成跨網域的資料傳輸時,接收端無法解讀(是加密過後的資料傳輸錯誤造成,但是在同一網站內的加解密是沒問題的),結果如下:

8 Q5 w- }$ q4 e  I; G' u  g
1.png
回復

使用道具 舉報

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

本版積分規則



中文酷站排行榜

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

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

GMT+8, 2024-10-29 04:33 , Processed in 0.075685 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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