对 Python 加密时可能会有两种形式,一种是对Python转成的exe进行保护,另一种是直接对py或者pyc文件进行保护,下面将列举两种形式的保护流程。
1、 对 python转exe加壳
下载最新版Virbox Protector加壳工具,使用加壳工具直接对demoexe进行加壳 *** 作
2、对py/pyc加密
第一步,使用加壳工具对 python 安装目录下的 pythonexe 进行加壳,将 pythonexe 拖入到加壳工具 VirboxProtector 中,配置后直接点击加壳。
第二步,对py/pyc 进行加密,使用 DSProtector 对py/pyc 进行保护。
你好,我自己设计了一个小小的加密器玩。你可以参考一下。这是带有界面的。
其中的算法你可以改掉。我是用来把密码转化一下并且复制到粘贴板来使用。希望对你有帮助!
import string
# -- coding: utf-8 --
import wx
from time import
from xlutilscopy import copy
import win32clipboard as w
import win32con
class MyApp(wxApp):
def OnInit(self):
selfframe = MyFrame(None, title='encryption')
selfSetTopWindow(selfframe)
selfframeregister_close_callback(lambda: True)
selfframeShow()
return True
class MyFrame(wxFrame):
def __init__(self,parent,id=wxID_ANY, title="",
pos=(700,480),size=(180,100),
style=wxDEFAULT_FRAME_STYLE ^wxRESIZE_BORDER ^ wxMAXIMIZE_BOX\
|wxSTAY_ON_TOP | wxFRAME_TOOL_WINDOW |wxSIMPLE_BORDER ,
name="MyFrame"):
bcolor=(0,0,0)
fcolor=(210,210,210)
super(MyFrame, self)__init__(parent, id, title,
pos, size, style,name)
selfpanel = wxPanel(self)
selfpanelSetBackgroundColour(bcolor)
selfpanelSetForegroundColour(fcolor)
selfSetBackgroundStyle(wxBG_STYLE_CUSTOM)
selfSetTransparent(251)
selfBind(wxEVT_CLOSE, selfonClose)
fontbutton = wxFont(10, wxROMAN, wxNORMAL, wxBOLD)
selfValueLabel1 = wxStaticText(selfpanel,-1,"superstar: ", pos=(3,10))
selfValueLabel1SetFont(fontbutton)
selfValue1 = wxTextCtrl(selfpanel,-1,"",pos=(65,10),
size=(106,-1),style=wxTE_PASSWORD)
selfValue1SetBackgroundColour(bcolor)
selfValue1SetForegroundColour(fcolor)
selfValue1SetInsertionPoint(11)
selfBind(wxEVT_TEXT_ENTER,selfValue1Enter,selfValue1)
confirm=wxButton(selfpanel,label='Confirm',pos=(3,40),size=(82,-1),style=wxBU_AUTODRAW)
confirmSetFont(fontbutton)
confirmSetBackgroundColour(bcolor)
confirmSetForegroundColour(fcolor)
selfBind(wxEVT_BUTTON,selfconfirmButton,confirm)
clear=wxButton(selfpanel,label='Clear',pos=(90,40),size=(82,-1),style=wxBU_AUTODRAW)
clearSetFont(fontbutton)
clearSetBackgroundColour(bcolor)
clearSetForegroundColour(fcolor)
selfBind(wxEVT_BUTTON,selfclearButton,clear)
def clearButton(self,event):
selfValue1SetValue('')
wOpenClipboard()
wEmptyClipboard()
wCloseClipboard()
def OnKeyDown(self,event):
keycode = eventGetKeyCode()
if keycode == wxWXK_UP:
print 'yes'
def Value1Enter(self, event):
selfgetvalue1=selfValue1GetValue()
def confirmButton(self,event):
selfgetvalue1=selfencrypt(selfValue1GetValue())
selfcopyToClip(selfgetvalue1)
def copyToClip(self,data):
wOpenClipboard()
wEmptyClipboard()
wSetClipboardData(win32conCF_TEXT, data)
wCloseClipboard()
def register_close_callback(self, callback):
self__close_callback = callback
def encrypt(self,s):
lis=''
ss=stringletters+stringdigits
for i in xrange(len(s)):
pos=ssfind(s[i])
num=pos(i%4+len(s))
lis+=ss[num/100%62]+ss[num%100%62]
return lis
def onClose(self, event):
selfDestroy()
wOpenClipboard()
wEmptyClipboard()
wCloseClipboard()
if __name__ == '__main__':
app=MyApp(False)
appMainLoop()
修改后运行结果:
a 加密
1进行栅栏加密
2进行栅栏解密
请选择: 1
请输入分组数目 2
请输入列排编号 21
请输明文 abcdefgh
b a
d c
f e
h g
b 解密
1进行栅栏加密
2进行栅栏解密
请选择: 2
请输入分组数目 2
请输入列排编号 21
请输密文 b a d c f e h g
abcdefgh
修改后的代码:
def Encrypt(n,col,M):
row=len(M)/n
if len(M)%n>0:
row+=1
arr=[[""for x in range(0,n)] for y in range(0,row)]
x=0
for i in range(0,row):
for j in range(0,n):
if x<len(M):
arr[i][j]=M[x]
#print M[x],
x+=1
#print "\r\n"
for i in range(0,row):
for j in range(0,n):
m=int(col[j])-1
print arr[i][m],
print "\r\n"
def Decrypt(n, col, C):
C=""join(Csplit())
row=len(C)/n
if len(C)%n>0:
row+=1
arr=[[""for x in range(0,n)] for y in range(0,row)]
x=0
for i in range(0,row):
for j in range(0,n):
if x<len(C):
arr[i][j]=C[x]
#print C[x],
x+=1
#print "\r\n"
M=""
for i in range(0,row):
for j in range(0,n):
m=int(col[j])-1
#print arr[i][m],
M+=arr[i][m]
#print "\r\n"
print M
print u"1进行栅栏加密\r\n2进行栅栏解密\r\n请选择:"encode("gb2312"),
sel=raw_input()
if int(sel)==1:
print u"请输入分组数目"encode("gb2312"),
n=int(raw_input())
print u"请输入列排编号"encode("gb2312"),
col=raw_input()
print u"请输明文"encode("gb2312"),
M=raw_input()
while len(M)<n3:
print u"明文必须是分组数目的3倍"encode("gb2312")
M=raw_input()
Encrypt(n,col,M)
else :
print u"请输入分组数目"encode("gb2312"),
n=int(raw_input())
print u"请输入列排编号"encode("gb2312"),
col=raw_input()
print u"请输密文"encode("gb2312"),
C=raw_input()
while len(C)<n3:
print u"密文必须是分组数目的3倍"encode("gb2312")
C=raw_input()
Decrypt(n,col,C)
python版本:python3,系统:win
会安装很多包:chardet, certifi, urllib3, idna, requests, pyyaml, Naked, shellescape, crypto
这时你会看到有crypto文件夹,将其重命名为Crypto即可;
pip uninstall pycrypto,然后安装pycryptodome,pip install pycryptodome,即可。
你会发现site-packages下的该模块的目录名已经是大写了-Crypto
这个时候pycryptodome就来了,它是pycrypto的延伸版本,用法和pycrypto是一模一样的
Python\Python36\Lib\site-packages,找到这个路径,下面有一个文件夹叫做crypto,将小写c改成大写C就ok了。
可以直接用加密软件加密。据了解加密软件可以加密所有类型文件的,可以对文件进行透明加密,在内部环境文件是可以正常打开的,脱离这个环境则打不开或乱码,可以禁止截屏、拷贝、复制、打印、修改等。文件外发需授权解密,未授权解密无论以任何形式发出都是无法正常打开的,还可设置文件外发的浏览次数和打开时间。在不影响日常使用的情况下保障文件安全。
以上就是关于python 编程 有了加密程序,怎么写解密程序全部的内容,包括:python 编程 有了加密程序,怎么写解密程序、python中如何设计一个密码加密器、利用以下python代码编写栏栅加密和解密等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)