當前位置:首頁 » 密碼管理 » py加密

py加密

發布時間: 2023-04-06 07:41:36

python 加密程序

#coding=utf-8

'''''

Description:可逆的加密與解密

Environment:python2.5.x

Author:[email protected]

'''

importos

importsys

classCode(object):

'''''可逆的加密與解密'''

def__init__(self,key="[email protected]"):

self.__src_key=key

self.__key=self.__get_strascii(self.__src_key,True)

defencode(self,value):

'''''加密函數,加密後為一串數字'''

return"%d"%(self.__get_strascii(value,True)^self.__key)

defdecode(self,pwd):

'''''解密函數'''

ifself.is_number(pwd):

returnself.__get_strascii((int(pwd))^self.__key,False)

else:

print'requirenumber.'

defreset_key(self,key):

'''''重新設置key'''

self.__src_key=key段亮

self.__key=self.__get_strascii(self.__src_key,True)

#===============================================================================

#內部調用介面

#===============================================================================

def__get_strascii(self,value,bFlag):

ifbFlag:

returnself.__get_str2ascii(value)

else:

returnself.__get_ascii2str(value)

def__get_str2ascii(self,value):

ls=[]

foriinvalue:

ls.append(self.__get_char2ascii(i))

returnlong("".join(ls))

def__get_char2ascii(self,char):

'''''獲取單個字元的acsii碼值'''

try:

return"%03.d"%ord(char)

except(TypeError,ValueError):

print"keyerror."

exit(1)

def__get_ascii2char(self,ascii):

ifself.is_ascii_range(ascii):

returnchr(ascii)

else:

print"asciierror(%d)"%ascii

exit(1)握衫寬

def__get_ascii2str(self,n_chars):

ls=[]

s="%s"%n_chars

n,p=divmod(len(s),3)

ifp>0:

nRet=int(s[0:p])

ls.append(self.__get_ascii2char(nRet))

pTmp=p

whilepTmp<len(s):

ls.append(self.__get_ascii2char(int(s[pTmp:pTmp+3])))

pTmp+=3

return"".join(ls)

#================================================================================

#工具介面

#================================================================================

defis_number(self,value):

try:

int(value)

returnTrue

except(TypeError,ValueError):

pass

returnFalse

defis_ascii_range(self,n):

return0<=n<256

defis_custom_ascii_range(self,n):

return33<=n<48or58<=n<126

classUsage(object):

'''''

命令行參數讀取與解析

'''

def__init__(self):

塌神self._clsWork=Code()

self._args_dic={'arg_help':['-?','-help'],

'arg_p':['-p','-pwd'],

'arg_t':['-t','-text'],

'arg_k':['-k','-key'],

}

defhelp(self,*k):

strHelp="Usage:pwd[-options][args...]whereoptioninclude:"

strHelp+="""

-?-helpprintthishelpmessage

-k<key_str>-p<pwd_str>

-k<key_str>-t<text_str>"""

printstrHelp

defargs(self,argv_ls):

'''''dispatchcommand'''

#printargv_ls

iflen(argv_ls)<=1orlen(argv_ls)>5:

print'Unrecognizedoption'

return

cmd_dic={}

curr_cmd=''

#controlcommand

fori,vinenumerate(argv_ls[1:]):

forjinself._args_dic.items():

#addcommand

ifvinj[1]andj[0]notincmd_dic:

curr_cmd=j[0]

cmd_dic[curr_cmd]=[]

break

else:

#addargv

ifcmd_dic:

cmd_dic[curr_cmd].append(v)

#execcommand

ifcmd_dic:

self.exec_cmd(cmd_dic)

else:

print'Unrecognizedoption'

defexec_cmd(self,cmd_dic):

'''''execcmd'''

iflen(cmd_dic)==2:

if'arg_p'incmd_dicand'arg_k'incmd_dic

andlen(cmd_dic['arg_p'])==1andlen(cmd_dic['arg_k'])==1:

self._clsWork.reset_key(cmd_dic['arg_k'][0])

printself._clsWork.encode(cmd_dic['arg_p'][0])

return

elif'arg_t'incmd_dicand'arg_k'incmd_dic

andlen(cmd_dic['arg_t'])==1andlen(cmd_dic['arg_k'])==1:

self._clsWork.reset_key(cmd_dic['arg_k'][0])

printself._clsWork.decode(cmd_dic['arg_t'][0])

return

self.help()

if__name__=='__main__':

usage=Usage()

usage.args(sys.argv)

㈡ 怎樣對 Python 源碼加密

代碼加密
大概整理了以下幾種方法:
編譯成pyc文件
使用py2exe將python代碼轉成window下執行的exe文件
關鍵代碼部分使用c或者c++寫,然後在python中調用
用C寫一個license,進行license驗證
作為一門解釋型的語言,加密的難度超級大。下面來簡單分析上面的解決方案:
編譯成pyc文件幾乎跟pyc沒有區別,保護力度太低
要是在linux機器上就沒法使用,而且這種exe文件也可以被破解的
核心代碼部分是計算密集型,用的是pandas,numpy等庫,用c重寫,簡直不可能,工作量太大。
沒搞過,不知道………
看來上面的解決方案都是不行的,在stackoverflow上對這個問題也進行了詳細的討論,用我蹩腳的英文來翻譯(意譯)一下得票率最高的:
「有什麼方法來解決這個問題嗎?(加密的問題)」沒有。任何保護都可以被逆向工程破解。就連DVD機的固件都可以被破解,盡管法律判定其為非法,但是AACS加密密鑰還是泄露出來。
因為沒有技術的方法可以阻止你的客戶看你的代碼,你必須用傳統的商業方法。
1. 許可證,合約,條款,條件。只要用戶簽訂了這些東西,及時用戶可以看見代碼,也會有法律約束(不過此建議在中國目前貌似不頂用)
2. 提供巨大的價值。如果你的東西非常好,而且價格很合理,那麼用戶很難拒絕——沒必要浪費時間和金錢去搞逆向工程啥的,因為逆向工程是很費銀子的。讓你的產品有足夠的性價比。
3. 經常性的升級和增加新的功能,使得逆向工程不那麼好使。當下一個版本破壞了逆向工程,那麼以前的破解就沒有意義了。
4. 定製化生產,為不同的客戶提供不同的產品。(貌似代價有點高啊)
5. 使用有時間限制的許可證,這會給你帶來不好的名聲,但是會保證你的軟體會停止工作
6. 設計為web service.
代碼混淆
既然加密不是一個好方法,那要還是不死心,那就做一個簡單的混淆算了,雖然只能」防君子,不防小人「。但是不能就這樣把代碼暴露出來。
這里推薦一個找了好久的東西: pyobfuscate這個東西在window7中的cmd中貌似總是混淆失敗,無奈用了MINGW32,居然搞定了。官方的資料有這樣的介紹:
pyobfuscate有幾種轉化代碼的方式,有些可逆,有些不可逆。
移除注釋和文檔 ( 不可逆)
改變縮進(可逆)
在tokens之間加入空格(一定程度上可逆)
重命名函數,類,和變數(不可逆)
在空白行中加入無效的代碼
我沒有選擇混淆函數名和類名,因為其他地方還要調用呢。下面是我混淆的結果,還挺好看的:
def my_fuction_to_test ( self , start_date , end_date ) :
iiiii11iII1 = self . get_something ( start_date , end_date )
O0o = [ ]
for oO0 in iiiii11iII1 :
if oO0 [ "isOpen" ] == 1 :
IIIi1i1I = { }
OOoOoo00oo = dt . strptime ( oO0 [ 'calendarDate' ] , '%Y-%m-%d' )
IIIi1i1I [ 'day' ] = OOoOoo00oo . strftime ( '%Y%m%d' )
IIIi1i1I [ 'week' ] = oO0 [ 'isWeekEnd' ]
IIIi1i1I [ 'month' ] = oO0 [ 'isMonthEnd' ]
IIIi1i1I [ 'weekday' ] = OOoOoo00oo . weekday ( )
O0o . append ( IIIi1i1I )
iiI11 = pd . DataFrame ( O0o )
return iiI11

㈢ Python簡單加密操作

加密是將一攔沖個明文數據,按照指定的演算法,運算得到一個其他的可以隱藏真簡彎殲實信息的密文數據,這個過程稱為加密;處理的演算法稱為加密演算法;用到的關鍵數據稱為密鑰。

解密是按照制定的演算法和關鍵數據,將一個密文數據進行逆向運算得到的正確的明文數據的過程

如:用戶賬號密碼存儲,此時任何人都不能查看該用戶的明文密碼

1.原始數據
2.編碼(轉換為位元組數鬧碧據)
3.使用演算法加密
4.利用鹽值更新密文
5.得到加密後的數據

編碼:字元串.encode(編碼名稱)——>位元組數據
解碼:位元組數據.decode(編碼名稱)——>字元串數據

==========================================

㈣ python文本加密是什麼

python文本加密是Python 提供了諸如 hashlib,base64 等便於使用的加密庫,我們可以藉助異或操作,實現一個簡單的文件加密程序。

通過了解異或操作的性質,加密原理就非常清晰了。

首先將文件轉換成二進制數,再生成與該二進制數等長的隨機密鑰,將二進制數與密鑰進行異或操作,得到加密後的二進制數。

將加密後的二進製程序與密鑰進行異或操作,就得到原二進制數,最後將原二進制數恢復成文本文件。

相關拓展

加密,是以某種特殊的演算法改變原有的信息數據,使得未授權的用戶即使獲得了已加密的信息,但因不知解密的方法,仍然無法了解信息的內容。

加密之所以安全,絕非因不知道加密解密演算法方法,而是加密的密鑰是絕對的隱藏,流行的RSA和AES加密演算法都是完全公開的,一方取得已加密的數據,就算知道加密演算法也好,若沒有加密的密鑰,也不能打開被加密保護的信息。

單單隱蔽加密演算法以保護信息,在學界和業界已有相當討論,一般認為是不夠安全的。公開的加密演算法是給黑客和加密家長年累月攻擊測試,對比隱蔽的加密演算法要安全得多。

盡管加密或為了安全目的對信息解碼這個概念十分簡單,但在這里仍需對其進行解釋。數據加密的基本過程包括對稱為明文的原來可讀信息進行翻譯,譯成稱為密文或密碼的代碼形式。該過程的逆過程為解密,即將該編碼信息轉化為其原來的形式的過程。

以上內容參考 網路-加密

㈤ python語言可以加密嗎

我們所說的加密方式都是對二進制編碼的格式進行加密,對應到python中,則是我們的bytes.
所以當我們在Python中進行加密操作的時候,要確保我們的操作是bytes,否則就會報錯.
將字元串和bytes互相轉換可以用encode()和decode()方法,如下所示:
注:兩位十六進制常常用來顯示一個二進制位元組.
推薦學習《python教程》。

㈥ py(pyc)源碼位元組碼操作碼等方面加殼加壓加密的安全系列

py源碼安全加密探研系列-基礎知識

py源碼安全加密探研系列-源碼混淆安全加密

py源碼安全加密探研系列-cython的.so 安全加密

py源碼安全加密探研系列-位元組碼安全加密

py源碼安全加密探研系列-修改解釋器(AES安全)

1.c++源碼一鍵混淆

https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzAxOTg5NjQ1NA==&action=getalbum&album_id=2447582729564389377#wechat_redirect

㈦ python打包是把.py加密碼

python打包是把.py加密。根據查詢相關資料信息,用行睜pyinstaller--noconsole--key1-D命令。noconsole:打包時不使用控制台。檔差歲慶扒key加密:密碼為1。D:所有的依賴庫獨立存放。F:只打包成一個可執行文件。

㈧ py如何實現對文件的加密

給電腦上的文件加密或者文件夾加密,你可以使用超級加密3000。
超級加密3000採用國際上成熟的加密演算法和安全快速肢芹的加密方法,可以有效保障數據安全!
具體操作方法:
1下載安裝超級加密3000。
2
然後在需要加密的文件上單擊滑鼠右鍵選擇加密。
3
在彈出的文件加嫌飢脊密窗口中設置文件加密密碼就OK了。
超級加密3000的下載地址你可以在網路上搜索超級加密3000,第一芹滲個就是。

㈨ Python程序加密打包

步驟:
1、使用此文程序編譯python源程序為pyd
鏈接: https://www.jianshu.com/p/4465cf9283b6
2、編寫入口py文件,調用pyd模塊
注意點:
1、由於pyinstaller不會導入pyd程序依賴包,所以需要將pyd程序依賴包在入口py文件中導入一次,避免打包exe時pyd無法使用
2、打包exe後,路徑有所變化,pyd中路徑需使用絕對路徑
3、pyd文件不要寫入口調用,if main等,在入口py文件中導包及調用相關函數

優點:脫離python環境,包依賴
缺點:文件較大
步驟:
1、將入口py文件打包為exe可執行程序,會自動導入pyd文件並進行封裝
注意點:
1、打包exe後,cmd下運行程序,看是否有錯誤輸出,按提示解決相應問題即可

㈩ 使用python之MD5進行加密

在許多介面,尤其涉及到金額的地方,都需要用加密演算法對數據進行加密。像密碼、金額之類的,如果不做加密,被篡改數據,公司的損失會很大。

這里主要說MD5加密(即摘要演算法),也就是採用哈希演算法,將不定長度的內容轉化為32位16進制固定長度的內容。前後台都使用這套演算法,再將兩者的加密數據比對,如果一致說明數據加密正確,否則數據可能出現篡改。

在pyhon里,可以導入hashlib進行加密,如下

方法一:

執行結果如下圖:

方法二:

執行結果如下圖:

熱點內容
用於打開ftp連接的應用程序 發布:2025-02-14 01:23:39 瀏覽:706
網站會員注冊源碼 發布:2025-02-14 01:09:45 瀏覽:657
小火山視頻密碼是什麼 發布:2025-02-14 01:09:40 瀏覽:505
我的世界手機創的伺服器電腦能進嗎 發布:2025-02-14 01:08:16 瀏覽:163
eclipseandroid運行 發布:2025-02-14 00:54:57 瀏覽:897
雲伺服器安全策略 發布:2025-02-14 00:54:07 瀏覽:289
小米手機如何更改賬號密碼 發布:2025-02-14 00:48:48 瀏覽:572
我的世界如何導出伺服器 發布:2025-02-14 00:48:39 瀏覽:722
工業伺服器機箱怎麼樣 發布:2025-02-14 00:29:15 瀏覽:86
英朗壓縮機 發布:2025-02-14 00:29:12 瀏覽:678