windows 文件hash校验,字符串加密,base64转换工具

个人博客地址

http://www.darkghost.life

对下载的文件使用hash校验验证文件完整性

1 import hashlib
 2 def md5():
 3     md5_value = hashlib.md5()
 4     with open('C:\Intel\S6720HI-V200R019C10SPC500.cc','rb') as f:
 5         while True:
 6             data = f.read(2048)
 7             if not data:
 8                 break
 9             md5_value.update(data)
10     print (md5_value.hexdigest())
11 md5()

也可用于前端页面注册用户信息,加密发送给后端

1 import hashlib
 2 #创建对象,加盐
 3 has = hashlib.md5('奔波的驱魔人'.encode('utf-8'))
 4 pwd = input('请输入密码>>>')
 5 #传入需要加密的字段
 6 has.update(pwd.encode('utf-8'))
 7 print(has.hexdigest())
 8
 9 #以上代码md5值等同于以下
10 has = hashlib.md5()
11 pwd = input('请输入密码>>>')
12 #传入需要加密的字段
13 has.update('奔波的驱魔人'.encode('utf-8'))
14 has.update(pwd.encode('utf-8'))
15 print(has.hexdigest())

base64编码与解码

1 import base64
2 a = 'vx:cs19911124'
3 a_encode = base64.b64encode(a.encode('utf-8'))
4 print(a_encode.decode('utf-8'))
5 b_decode = base64.b64decode(a_encode).decode('utf-8')
6 print(b_decode)

封装进 tkinter

1 import tkinter
 2 from tkinter import filedialog
 3 import hashlib,base64
 4 class dark:
 5     def __init__(self):
 6         self.init_window = tkinter.Tk()
 7         self.init_window.title('MD5转换工具')
 8         self.init_window.geometry('1068x681+10+10')
 9     def run(self):
10         self.left_lable = tkinter.Label(self.init_window,text='原始数据')
11         self.left_lable.grid(row=0,column=0)
12         self.right_lable = tkinter.Label(self.init_window,text='转换后数据')
13         self.right_lable.grid(row=0,column=12)
14         self.source_text = tkinter.Text(self.init_window,height=48,width=65)
15         self.source_text.grid(row=1,column=0,rowspan=11,columnspan=10)
16         self.change_text = tkinter.Text(self.init_window,height=48,width=65)
17         self.change_text.grid(row=1,rowspan=11,column=12,columnspan=10)
18         self.button = tkinter.Button(self.init_window,text='文件md5校验',command=self.filetomd5)
19         self.button.grid(row=4,column=11)
20         self.button = tkinter.Button(self.init_window,text='字符串转MD5',command=self.changetomd5)
21         self.button.grid(row=5,column=11)
22         self.button2 = tkinter.Button(self.init_window,text='字符串转BASE64',command=self.strtobase64)
23         self.button2.grid(row=7,column=11)
24         self.button3 = tkinter.Button(self.init_window,text='BASE64转字符串',command=self.base64tostr)
25         self.button3.grid(row=8,column=11)
26         self.init_window.mainloop()
27     def changetomd5(self):
28         source = self.source_text.get(1.0,tkinter.END).strip().replace("\n","").encode()
29         changemd5 = hashlib.md5()
30         changemd5.update(source)
31         ret = changemd5.hexdigest()
32         self.insert(ret)
33     def strtobase64(self):
34         source = self.source_text.get(1.0,tkinter.END).strip().replace("\n","").encode()
35         change_base64 = base64.b64encode(source).decode()
36         self.insert(change_base64)
37     def base64tostr(self):
38         source = self.source_text.get(1.0,tkinter.END).strip().replace("\n","").encode()
39         change_base64 = base64.b64decode(source).decode()
40         self.insert(change_base64)
41     def filetomd5(self):
42         selectFile = filedialog.askopenfilename()
43         md5_value = hashlib.md5()
44         try:
45             with open(selectFile,'rb') as f:
46                 while True:
47                     data = f.read(2048)
48                     if not data:
49                         break
50                     md5_value.update(data)
51             self.insert(md5_value.hexdigest())
52         except:
53             pass
54     def insert(self,data):
55         self.change_text.delete(1.0,tkinter.END)
56         self.change_text.insert(1.0,data)
57 obj = dark()
58 obj.run()

打包成exe程序,运行效果如下

windows  文件hash校验,字符串加密,base64转换工具

链接: https://pan.baidu.com/s/1YGz-jP77wcHAk-qiz5PuOw 提取码: 3rqq

Original: https://www.cnblogs.com/darkchen/p/15188679.html
Author: 奔波的驱魔人
Title: windows 文件hash校验,字符串加密,base64转换工具

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/714413/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • CS144lab笔记

    下面看代码: lab0 webget.cc 点击查看代码 webget.cc byte_stream.hh 点击查看代码 // ccm #ifndef SPONGE_LIBSPON…

    技术杂谈 2023年7月24日
    086
  • Dockerfile 使用 SSH docker build

    如果在书写 Dockerfile 时,有些命令需要使用到 SSH 连接,比如从私有仓库下载文件等,那么我们应该怎么做呢? Dockerfile 文件配置 为了使得 Dockerfi…

    技术杂谈 2023年7月10日
    093
  • SVN还原项目到某一版本

    将本地的项目通过SVN还原到某一版本,并将SVN服务器上的项目也还原到这一版本 第一步:新建一个文件夹,如test,选中test右键-checkout到最新版本 第二步:选中tes…

    技术杂谈 2023年5月31日
    080
  • Mac上Sublime常用快捷键

    分屏: command + Alt + 2 快速复制当前行代码并插入到下一行: ctrl + shift + d 多行修改一个字段: option + 鼠&a…

    技术杂谈 2023年6月21日
    092
  • 【笔试】1、强迫卖家

    小明是个强迫症卖家,有10000台设备,卖的均价要求最接近D元,输出卖出的台数N,总售价M 输入 0首先想得是暴力解答然后是二分查找,寻找卖出多少台才符合要求,但是一直找不到符合要…

    技术杂谈 2023年7月24日
    065
  • [转载]chrome拓展开发实战:页面脚本的拦截注入

    原文请访问个人博客:chrome拓展开发实战:页面脚本的拦截注入 目前公司产品的无线站点已经实现了业务平台组件化,所有业务组件的转场都是通过路由来完成,而各个模块是通过 requi…

    技术杂谈 2023年5月30日
    0155
  • ElasticSearch(二)检索的进阶

    ElasticSearch(二)检索的进阶 检索的进阶 SearchAPI ES支持两种基本方式的检索: https://www.elastic.co/guide/en/elast…

    技术杂谈 2023年7月10日
    091
  • PyQt5 键盘事件

    from PyQt5.Qt import * import sys class Window(QWidget): def __init__(self): super().__ini…

    技术杂谈 2023年5月31日
    083
  • 使用sysbench测试lightdb性能

    1、sysbench可用于测试mysql和lightdb性能。首先安装lightdb,可参考https://www.cnblogs.com/zhjh256/p/15170255.h…

    技术杂谈 2023年6月1日
    095
  • Windows DIB文件操作具体解释-4.使用DIB Section

    前面讲了为了提高DIB的显示性能和效率,我们将DIB转换成DDB。可是这又遇到一个问题。假设我想操作DIB的数据的话,显然是不能使用DDB:一是由于DIB转DDB时发生了颜色转换。…

    技术杂谈 2023年5月31日
    084
  • Collections.singletonList方法

    这个方法主要用于只有一个元素的优化, 减少内存分配,无需分配额外的内存,可以从SingletonList内部类看得出来,由于只有一个element,因此可以做到内存分配最小化,相比…

    技术杂谈 2023年7月24日
    067
  • Anaconda, PyTorch, CUDA Driver, PyCharm 安装与配置

    安装Anaconda(2022.05) 最新版本 https://www.anaconda.com/历史版本 https://repo.anaconda.com/archive/ …

    技术杂谈 2023年7月24日
    087
  • 函数式编程-Stream流

    函数式编程-Stream流 1. 概述 1.1 为什么学? 能够看懂公司里的代码 大数量下处理集合效率高 代码可读性高 消灭嵌套地狱 //查询未成年作家的评分在70以上的书籍 由于…

    技术杂谈 2023年7月11日
    089
  • 数组的改变和移动

    1.1 数组的改变 数组在内存中是一块连续的内存空间,我们可以直接通过下标进行访问,并进行修改。 在 Java中,对于 List类型来说,我们可以通过 set(idx, eleme…

    技术杂谈 2023年6月21日
    090
  • Java中流水编号的生成

    在开发中,遇到这样一个需求,在介质资料新增时,需要生成一个介质编号,格式为”JZ+yyyyMMdd+4位递增数字”先是使用百度找寻解决方法。解决方法 里面的…

    技术杂谈 2023年7月24日
    084
  • 购买2T U盘,工具检测后实际容量只有65G

    检测工具: 360U盘鉴定器 chipgenius芯片精灵 一芯主控量产工具FirstChip_MpTools_20211024 工具合集下载 使用 360U盘鉴定器,鉴定U盘实际…

    技术杂谈 2023年5月31日
    0111
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球