免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4674 | 回复: 1
打印 上一主题 下一主题

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(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
2 [报告]
发表于 2010-01-18 22:06 |只看该作者
wxpython 也支持拖放啊。不错不错
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP