免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4202 | 回复: 1

wxpython 实现的md5字串加密以及文件md5校验工具 [复制链接]

论坛徽章:
0
发表于 2010-01-13 15:04 |显示全部楼层
    最近正在学习Python,练手写的小工具,图形界面用的是wxPython,经测试在计算2G左右的大文件MD5校验码时比网上流传的winMD5速度快一倍左右。增加了双色球随机数生成功能,方便买彩票,呵呵!



源码:

# -*- coding: cp936 -*-
import wx
import hashlib,random
class MyFileDropTarget(wx.FileDropTarget):
    def __init__(self, window):
        wx.FileDropTarget.__init__(self)
        self.window = window
    def OnDropFiles(self, x, y, filenames):
        #self.window.AppendText("\n%d file(s) dropped at (%d,%d):\n" % (len(filenames), x, y))
        for file in filenames:
            m = hashlib.md5()
            f = open('\\'.join(file.split('\\')),'rb')
            bytes = f.read(10240)
            while(bytes != ''):
                m.update(bytes)
                bytes = f.read(10240)
            f.close()
            md5value = m.hexdigest()
            self.window.AppendText("%s\t%s\n" % (md5value.upper(),file.split('\\')[-1]))
class InsertFrame(wx.Frame):
    def __init__(self, parent, id):
        wx.Frame.__init__(self, parent, id, 'MD5计算工具(32位)-吃鱼翅的鱼 xglcr@163.com', size=(430, 285))
        panel = wx.Panel(self)
        font=wx.Font(9,wx.MODERN, wx.NORMAL, wx.NORMAL)
        wx.StaticText(panel, -1, u"字 符 串:", pos=(15, 15))
        self.usertext = wx.TextCtrl(panel, -1, "", pos=(75,12), size=(330, 20))
        self.usertext.SetFont(font)
        wx.StaticText(panel, -1, u"加密结果:", pos=(15,50))
        self.comtext = wx.TextCtrl(panel, -1, "", pos=(75,47), size=(330, 20), style=wx.TE_READONLY)
        self.comtext.SetFont(font)
        self.button1 = wx.Button(panel, label=u'清 空', pos=(30, 80), size=(80, 25))
        self.button2 = wx.Button(panel, label=u'加 密', pos=(120, 80), size=(80, 25))
        self.button3 = wx.Button(panel, label=u'退 出', pos=(325, 222), size=(80, 25))
        wx.StaticText(panel, -1, u"注数:", pos=(210,85))
        self.number = wx.TextCtrl(panel, -1, "", pos=(250,83), size=(30, 20))
        self.button4 = wx.Button(panel, label=u'双色球随机数生成', pos=(290, 80), size=(110, 25))
        self.Bind(wx.EVT_BUTTON, self.onclear, self.button1)
        self.Bind(wx.EVT_BUTTON, self.onencrypt, self.button2)
        self.Bind(wx.EVT_BUTTON, self.onclose, self.button3)
        self.Bind(wx.EVT_BUTTON, self.printball, self.button4)
        #self.button1.Enable(False)
        self.text = wx.TextCtrl(panel, -1, "", (15, 115), (390, 100), style=wx.TE_MULTILINE|wx.HSCROLL|wx.TE_READONLY)
        dt = MyFileDropTarget(self.text)
        self.text.SetDropTarget(dt)
        self.text.SetFont(font)
        wx.StaticText(panel, -1, u"拖动文件到这个窗口,并自行计算它们的MD5校验", pos=(15,225))
    def printball(self,event):
        self.text.Clear()
        num = self.number.GetValue()
        if not num:
            self.text.AppendText("请输入要生成的注数!")
        for i in range(int(num)):
            balls = self.generate(self)
            self.text.AppendText("红球:%s\t蓝球:%2s\n" % (balls[0],balls[1]))
    def generate(self,event):
        tmplist = range(1, 34)
        redballs = []
        for i in range(6):
            redballs.append(tmplist.pop(random.randint(0, len(tmplist)-1)))
        blueball = random.randint(1,16)
        return redballs,blueball
    def onclear(self,event):
        self.usertext.Clear()
        self.comtext.Clear()
        self.text.Clear()
        #self.button1.Enable(False)
    def onencrypt(self,event):
        self.comtext.SetValue(hashlib.md5(self.usertext.GetValue()).hexdigest())
        #self.button1.Enable(True)
    def onclose(self,event):
        self.Close()
if __name__ == '__main__':
    app = wx.PySimpleApp()
    frame = InsertFrame(parent=None, id=-1)
    frame.Show()
    app.MainLoop()


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/33982/showart_2147590.html

论坛徽章:
0
发表于 2010-01-18 22:06 |显示全部楼层
wxpython 也支持拖放啊。不错不错
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会 限时8.5折

【架构革新 高效可控】2020年8月17日~19日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP