php源碼怎麼加密

  1、無需任何PHP擴展的加密php

  此類加密的表明有 威盾PHP加密專家、PHP在線加密平臺、PHP神盾 等。編輯器

  此類加密都是以eval函數爲核心,輔以各式各樣的字符串混淆和各類小技巧,來達到加密目的(更準確的說,應該算是混淆)。下面以一個簡單的hello world爲例來講明此類加密的大致過程。函數

  echo "hello world";編碼

  首先,咱們把這段代碼變爲經過eval執行的加密

  eval('echo "hello world";');url

  而後,咱們再進行一些轉換,好比說base64編碼code

  eval(base64_decode('ZWNobyAiaGVsbG8gd29ybGQiOw=='));md5

  就這樣子,咱們的第一個加密過的php代碼新鮮出爐了。。。字符串

  上面這個例子很是很是簡單,基本上任何有一點php語言基礎甚至別的語言基礎的人都能輕鬆的看懂並解密。所以,咱們須要一些方法讓這個加密至少看上去不是那麼簡單。get

  2、同時採用多種編碼函數

  除了剛纔提到的base64,php還有許多內置的編碼函數,例如urlencode、gzcompress等。把這些函數混合使用能夠提升解密的複雜度(不是難度),此外還可使用strtr來制定本身的編碼規則。 使用變量來代替函數名 使用特定字符來命名變量

  這兒所說的特定字符是一些極其類似的字符,如I和1,0和O。試想一下滿屏都是O和0組成的變量,而且每個的名字長度都在10個字符以上。。。 判斷文件自身是否被修改

  這個功能看似容易,對文件作一下摘要再進行下對比便可知道是否被修改了,可是如何才能在文件內把摘要嵌入進去呢?我沒有找到完美的方案,但一個變通的方案仍是很容易的。。。

  $code = substr(file_get_contents(__FILE__), 0, -32);

  $hash = substr(file_get_contents(__FILE__), -32);

  if(md5($code) !== $hash) {

  exit('file edited');

  }

  ACBC41F727E00F85BEB3440D751BB4E3

  固然,你能夠把這個校驗字符串放在別的位置來提升破解的難度。有了這個,別人想破解你的程序可就得多費一點功夫了。。。

  既然知道了原理,那解密天然也就很是簡單了,整體來講就三步:

  把eval替換爲輸出,好比echo 根據編碼規則把字符串還原 若是文件未解密徹底,從第一步開始繼續

  固然,實際上的解密過程並無這麼簡單,好比說若是加密的時候使用了gzcompress,那獲得的數據將會包含一些二進制數據,而採用通常的文本編輯器打開時這些數據都會顯示爲亂碼,而且在保存時丟失部分數據。解決方法很簡單也很麻煩,那就是使用二進制(16進制)方式打開、修改和保存。

相關文章
相關標籤/搜索