python hashlib
1. hashlib:MD5,sha256,sha512
import hashlib
# ######## md5 ########
hash = hashlib.md5()
hash.update('admin'.encode())
print(hash.hexdigest())
# ######## sha1 ########
hash = hashlib.sha1()
hash.update('admin'.encode())
print(hash.hexdigest())
# ######## sha256 ########
hash = hashlib.sha256()
hash.update('admin'.encode())
print(hash.hexdigest())
# ######## sha384 ########
hash = hashlib.sha384()
hash.update('admin'.encode())
print(hash.hexdigest())
# ######## sha512 ########
hash = hashlib.sha512()
hash.update('admin'.encode())
print(hash.hexdigest())
2. hmac:
带有key的hash,可以自定义key值加密,注意message、key都是bytes类型! str需要先转成bytes。
import hmac
message = b'Hello,'
key = b'secret'
h = hmac.new(key, message, digestmod='MD5')
h.update(b' world!')
# 如果消息很长,可以多次调用h.update(msg)
print(h.hexdigest())
文件夹查找相同文件:
import hashlib
import os
import send2trash
'''find the same file in a folder ,
use md5 and sha512 to make sure they are same files'''
def getMD5(path):
d5 = hashlib.md5() #生成一个hash的对象
with open(path,'rb') as f:
while True:
content = f.read(40960) # 每次读取40960大小,防止打开大文件导致内存溢出
if not content:
break
d5.update(content) # 每次读取一部分,多次调用,和一次性调用效果一样
# print('MD5 : %s' % d5.hexdigest())
return d5.hexdigest() # 16进制的hash值
def getSha512(path):
sh = hashlib.sha512()
with open(path,'rb') as f:
while True:
content = f.read(40960)
if not content:
break
sh.update(content)
# print(sh.hexdigest())
return sh.hexdigest()
def walk(path):
x = input('Want to delete duplicate file? y/n\n')
if x.lower() == 'y':
delete = True
else:
delete = False
dict = {}
n = 1
for folder,subfolder,filenames in os.walk(path):
for filename in filenames:
print('\rHas scanned %s files' %n,end='')
root = os.path.join(folder,filename)
md5 = getMD5(root)
if md5 in dict:
sha1 = getSha512(root)
sha2 = getSha512(dict[md5])
if sha1 == sha2:
# delete to recycle_bin
if delete == True:
send2trash.send2trash(dict[md5])
print('\n%s\n%s\n' %(root,dict[md5]))
else:
pass
dict[md5] = root
n += 1
print('\nDone.')
if __name__ == '__main__':
path = input('Input path:\n')
walk(path)
分类:
python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构