如何加密Python程式碼?教你5種方法快速實現!

這幾年,Python越來越火了,在各平臺釋出的程式語言排行榜中都名列前茅,而且隱隱有與語言老大“java”爭鋒的節奏。

如何加密Python程式碼?教你5種方法快速實現!

Python為什麼這麼火?究其原因,是因為Python具有很多優點,比如簡單易學,程式碼量少,能做的事很多等等,但是,不可忽視的是,Python和其他語言一樣,也有一些缺點,如版本不相容,執行效率不高等。

其中有一個缺點困擾著不少開發者,由於Python直譯器開源,所以在方便開發者的同時,也導致Python程式碼無法加密,程式碼的安全性得不到保障。

當然,想要加密Python程式碼,也並非無解,今天就教大家5種加密方。get起來~

如何加密Python程式碼?教你5種方法快速實現!

方法一:

Python直譯器在執行程式碼的過程中,會首先生成(。pyc)檔案,然後再解釋執行(。pyc)中的內容,當然,直譯器也能直接執行(。pyc)檔案。

(。pyc)檔案是一個二進位制的檔案,是不具備可讀性的。

假設一下,如果我們發給客戶時,傳送的是(。pyc)檔案,而不是(。py),那麼是不是意味著可以保護我們的Python程式碼呢?

其實想要做到這一點也並非很難。Python標準庫就提供了一個名叫compileall的庫,使用它就可以做到。

執行如下命令,即可將目錄下的所有(。py)檔案編譯成(。pyc)檔案:

python -m compileall 然後刪除 目錄下所有 (。py)檔案就可以了。

$ find -name ‘*。py’ -type f -print -exec rm {} \;

透過這種方法,能夠加密我們的Python程式碼,不至於一點防護都沒有。不過,也存在一個問題,因為Python直譯器的相容較差,某些版本不能完全執行(。pyc)檔案,而且現在也出現了一些反編譯工具,能夠破解。

比如,python-uncompyle6(「連結」),只要執行以下命令,就可以搞定。

$ uncompyle6 *compiled-python-file-pyc-or-pyo*

方法二:

把程式碼寫的混淆也是一種常見的程式碼“加密”方式,不過,嚴格來說,這種方法並不是真正意義上的“加密”,而是更大程度降低程式碼的可讀性,內容不可讀,自然起到保護程式碼的作用了。

比如刪除註釋,新增毫無意義的註釋,新增無效程式碼,對變數、函式、類進行重新命名等。

程式碼混淆的工具很多,一個比較好用的混淆庫是pyobfuscate(GitHub - astrand/pyobfuscate: pyobfuscate)。這個庫可以對類、函式進行重新命名,並且插入無關的程式碼,甚至自動加空格等等。

這種方法相對簡單,但是破解門檻卻很高。不過,需要注意的是,由於程式碼結構沒有發生實質變化,位元組碼也能獲取,所以還是能夠被破解的。

如何加密Python程式碼?教你5種方法快速實現!

方法三:

如果能夠將Python指令碼打包成在某一平臺的可執行檔案,最終我們發行的,是一份打包完成的二進位制檔案,是否意味著程式就更難破解了呢?

py2exe(FrontPage - py2exe。orgFrontPage - py2exe。org)就是一款很好的打包工具,可以將Python指令碼打包成可在Windows上執行的檔案。

這種方式的優點是進一步提高了破解門檻。不過缺點也非常明顯,就是隻能在windows上執行它。

方法四:

如果Python執行速度慢,可以使用Cython帶來效能提升,其實,用Cython也能夠達到為Python加密的目的。

Cython的原理是,將(。py)編譯為(。c)檔案,再將(。c)檔案編譯為(。so)或者(。pyd),幾經轉換下來,檔案就變得難以破解了。

這樣做的好處是,Python程式碼很難被破解,不過棘手的是,Cython可能不支援一小部分程式碼,對於後續的維護和完善比較麻煩。

方法五:

由於Python是解釋型語言,因此在發行Python程式的時候,就必須包含一個Python直譯器,加入我們修改這個直譯器,是否就能起到保護程式碼的作用了呢?

如果我們能對最原始的Python程式碼進行加密,加密後的程式碼被髮行後。哪怕被別人看到了,但因為不知道其中的具體演算法是怎樣的,也就無從下手破解了。

因為Python直譯器本身是一個二進位制檔案,自然也就無法獲得關鍵性的資料,進而保護了原始碼。

雖然這一方法最為安全,可對於開發者的操作難度要求也高。操作者必須掌握基本的加解密演算法,還要探究Python執行程式碼的方式,從而瞭解到從什麼地方進行加解密。最後禁用位元組碼,以防透過(。pyc)反編譯即可。

如何加密Python程式碼?教你5種方法快速實現!

這5種加密方式各有利弊,也各有優缺點,大家在選擇的時候還是要根據自身情況。

“1024 程式設計師節”將至,千鋒教育神秘大動作蓄勢待發,敬請期待!