乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      php源碼怎么加密

       求知_時光 2019-05-25

      一、無需任何PHP擴展的加密

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

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

      echo 'hello world';

      首先,我們把這段代碼變?yōu)橥ㄟ^eval執(zhí)行的

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

      然后,我們再進行一些轉(zhuǎn)換,比如說base64編碼

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

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

      上面這個例子非常非常簡單,基本上任何有一點php語言基礎甚至別的語言基礎的人都能輕松的看懂并解密。因此,我們需要一些方法讓這個加密至少看上去不是那么簡單。

      二、同時采用多種編碼函數(shù)

            除了剛才提到的base64,php還有許多內(nèi)置的編碼函數(shù),例如urlencode、gzcompress等。把這些函數(shù)混合使用可以提高解密的復雜度(不是難度),此外還可以使用strtr來制定自己的編碼規(guī)則。 使用變量來代替函數(shù)名 使用特定字符來命名變量

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

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

      $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 根據(jù)編碼規(guī)則把字符串還原 如果文件未解密完全,從第一步開始繼續(xù)

            當然,實際上的解密過程并沒有這么簡單,比如說如果加密的時候使用了gzcompress,那得到的數(shù)據(jù)將會包含一些二進制數(shù)據(jù),而采用一般的文本編輯器打開時這些數(shù)據(jù)都會顯示為亂碼,并且在保存時丟失部分數(shù)據(jù)。解決方法很簡單也很麻煩,那就是使用二進制(16進制)方式打開、修改和保存。

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多