1. 程式人生 > >【Python】python檔案或文字加密(4種方法)

【Python】python檔案或文字加密(4種方法)

Date: 2018.6.17 端午

1、參考
2、python下編譯py成pyc和pyo (檔案加密)

將python檔案.py編譯成pyc二進位制檔案:

python -m py_file.py

或者通過指令碼執行:

import py_compile  ##單個檔案編譯
import compileall   ##多個檔案編譯 
py_compile.compile('path') ##path是包括.py檔名的路徑

將python檔案編譯成pyo二進位制檔案:

python -O -m py_file.py

什麼是pyc檔案?

pyc是一種二進位制檔案,是由py檔案經過編譯後,生成的檔案,是一種byte code,py檔案變成pyc檔案後,載入的速度有所提高,而且pyc是一種跨平臺的位元組碼,是由python的虛擬機器來執行的,這個是類似於JAVA或者.NET的虛擬機器的概念

注意事項:pyc的內容,是跟python的版本相關的,不同版本編譯後的pyc檔案是不同的,2.5編譯的pyc檔案,2.4版本的 python是無法執行的。

什麼是pyo檔案?

pyo是優化編譯後的程式 python -O 原始檔即可將源程式編譯為pyo檔案

什麼是pyd檔案?

pyd是python的動態連結庫。

3、將Python檔案轉成exe封裝(檔案加密)
4、採用hashlib或pycrypto模組進行文字加密

hashlib模組:

import hashlib
sha1 = hashlib.sha1('文字內容')  #加密
osv=sha1.hexdigest() 
print(osv)
bx=bytes
(osv,encoding='utf-8') #轉換型別 with open('1.txt','wb') as f: #以二進位制寫型別開啟 f.write(bx) #寫入檔案 get_sha1('')

pycrypto模組:

from Crypto.Cipher import AES
obj = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456')
message = "The answer is no"
ciphertext = obj.encrypt(message)
>>> ciphertext
'\xd6\x83\x8dd!VT\x92\xaa`A\x05\xe0\x9b\x8b\xf1'
>>> obj2 = AES.new
('This is a key123', AES.MODE_CBC, 'This is an IV456') >>> obj2.decrypt(ciphertext) 'The answer is no'