python對密碼加密
A. 用python3.4進行各種加密演算法的例子
這是一個MD5加密的函數例子,僅供參考
importhashlib
defmd5(s):
m=hashlib.md5()
m.update(s.encode(encoding="utf-8"))
returnm.hexdigest()
print(md5('1'))
B. Python如何對Word加密
你可以先保存為path2,然後刪除path1,最後把path2的名字改成path1的名字
C. python寫的程序能加密嗎
你可以安裝pyinstaller,編譯成可執行文件,大小會比原文件大。其他方法也有。但是pyinstaller簡單一點.
用法:先安裝pyinstaller。按照python版本安裝:
pip install pyinstaller
安裝好之後:pyinstaller -F python文件。
編譯好了文件在./dist/下,直接用就行
D. 怎麼樣給python文件加密
簡單模式:
from hashlib import md5
def md5_file(name):
m = md5()
a_file = open(name, 'rb') #需要使用二進制格式讀取文件內容
m.update(a_file.read())
a_file.close()
return m.hexdigest()
if __main__ == '__init__':
print md5_file('d:/test.txt')
大文件速度更快一點的方式
#!/usr/bin/python
#encoding=utf-8
import io
import sys
import hashlib
import string
def printUsage():
print ('''''Usage: [python] pymd5sum.py ''')
def main():
if(sys.argv.__len__()==2):
#print(sys.argv[1])
m = hashlib.md5()
file = io.FileIO(sys.argv[1],'r')
bytes = file.read(1024)
while(bytes != b''):
m.update(bytes)
bytes = file.read(1024)
file.close()
#md5value = ""
md5value = m.hexdigest()
print(md5value+"\t"+sys.argv[1])
#dest = io.FileIO(sys.argv[1]+".CHECKSUM.md5",'w')
#dest.write(md5value)
#dest.close()
else:
printUsage()
main()
E. python中如何設計一個密碼加密器
你好,我自己設計了一個小小的加密器玩。你可以參考一下。這是帶有界面的。
其中的演算法你可以改掉。我是用來把密碼轉化一下並且復制到粘貼板來使用。希望對你有幫助!
importstring
#-*-coding:utf-8-*-
importwx
fromtimeimport*
fromxlutils.import
importwin32clipboardasw
importwin32con
classMyApp(wx.App):
defOnInit(self):
self.frame=MyFrame(None,title='encryption')
self.SetTopWindow(self.frame)
self.frame.register_close_callback(lambda:True)
self.frame.Show()
returnTrue
classMyFrame(wx.Frame):
def__init__(self,parent,id=wx.ID_ANY,title="",
pos=(700,480),size=(180,100),
style=wx.DEFAULT_FRAME_STYLE^wx.RESIZE_BORDER^wx.MAXIMIZE_BOX
|wx.STAY_ON_TOP|wx.FRAME_TOOL_WINDOW|wx.SIMPLE_BORDER,
name="MyFrame"):
bcolor=(0,0,0)
fcolor=(210,210,210)
super(MyFrame,self).__init__(parent,id,title,
pos,size,style,name)
self.panel=wx.Panel(self)
self.panel.SetBackgroundColour(bcolor)
self.panel.SetForegroundColour(fcolor)
self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
self.SetTransparent(251)
self.Bind(wx.EVT_CLOSE,self.onClose)
fontbutton=wx.Font(10,wx.ROMAN,wx.NORMAL,wx.BOLD)
self.ValueLabel1=wx.StaticText(self.panel,-1,"superstar:",pos=(3,10))
self.ValueLabel1.SetFont(fontbutton)
self.Value1=wx.TextCtrl(self.panel,-1,"",pos=(65,10),
size=(106,-1),style=wx.TE_PASSWORD)
self.Value1.SetBackgroundColour(bcolor)
self.Value1.SetForegroundColour(fcolor)
self.Value1.SetInsertionPoint(11)
self.Bind(wx.EVT_TEXT_ENTER,self.Value1Enter,self.Value1)
confirm=wx.Button(self.panel,label='Confirm',pos=(3,40),size=(82,-1),style=wx.BU_AUTODRAW)
confirm.SetFont(fontbutton)
confirm.SetBackgroundColour(bcolor)
confirm.SetForegroundColour(fcolor)
self.Bind(wx.EVT_BUTTON,self.confirmButton,confirm)
clear=wx.Button(self.panel,label='Clear',pos=(90,40),size=(82,-1),style=wx.BU_AUTODRAW)
clear.SetFont(fontbutton)
clear.SetBackgroundColour(bcolor)
clear.SetForegroundColour(fcolor)
self.Bind(wx.EVT_BUTTON,self.clearButton,clear)
defclearButton(self,event):
self.Value1.SetValue('')
w.OpenClipboard()
w.EmptyClipboard()
w.CloseClipboard()
defOnKeyDown(self,event):
keycode=event.GetKeyCode()
ifkeycode==wx.WXK_UP:
print'yes'
defValue1Enter(self,event):
self.getvalue1=self.Value1.GetValue()
defconfirmButton(self,event):
self.getvalue1=self.encrypt(self.Value1.GetValue())
self.ToClip(self.getvalue1)
defToClip(self,data):
w.OpenClipboard()
w.EmptyClipboard()
w.SetClipboardData(win32con.CF_TEXT,data)
w.CloseClipboard()
defregister_close_callback(self,callback):
self.__close_callback=callback
defencrypt(self,s):
lis=''
ss=string.letters+string.digits
foriinxrange(len(s)):
pos=ss.find(s[i])
num=pos**(i%4+len(s))
lis+=ss[num/100%62]+ss[num%100%62]
returnlis
defonClose(self,event):
self.Destroy()
w.OpenClipboard()
w.EmptyClipboard()
w.CloseClipboard()
if__name__=='__main__':
app=MyApp(False)
app.MainLoop()
F. 怎樣對 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
G. Python怎麼實現對字元串的加密解密
from random import seed,randint str_in=input('請輸入一個字元串:內') you_seed=input('請輸入密容碼:') you_seed=int(you_seed) #lock def my_lock(lock_str,lock_seed): seed(lock_seed) li_out=[] for i in lock_str: li_out.append(chr(ord(...
H. Python怎麼對用戶密碼進行MD5加密,或者是單向加密
importmd5
name='test'
password='123'
m1=md5.new()
m1.update('%s%s'%(name,password))
printm1.hexdigest()
I. jmu-python-凱撒密碼加密演算法,謝謝
def encryption():
str_raw = input("請輸入明文:")
k = int(input("請輸入位移值:"))
str_change = str_raw.lower()
str_list = list(str_change)
str_list_encry = str_list
i = 0
while i < len(str_list):
if ord(str_list[i]) < 123-k:
str_list_encry[i] = chr(ord(str_list[i]) + k)
else:
print ("解密結果為:"+"".join(str_list_decry))
while True:
print (u"1. 加密")
print(u"2. 解密")
choice = input("請選擇:")
if choice == "1": encryption()
elif choice == "2": decryption()
else: print (u"您的輸入有誤!")
J. Python中的如何給一個字元串加密
import rsa rsaPublickey = int(pubkey, 16) key = rsa.PublicKey(rsaPublickey, 65537) #創建公鑰復 message = str(servertime) + '\t' + str(nonce) + '\n' + str(password) #拼接明制文js加密文件中得到 passwd = rsa.encrypt(message, key) #加密 passwd = binascii.b2a_hex(passwd) #將加密信息轉換為16進制。 return passwd