Python實(shí)現(xiàn)通過(guò)文件路徑獲取文件hash值的方法
本文實(shí)例講述了Python實(shí)現(xiàn)通過(guò)文件路徑獲取文件hash值的方法。分享給大家供大家參考,具體如下:
import hashlib
import os,sys
def CalcSha1(filepath):
with open(filepath,'rb') as f:
sha1obj = hashlib.sha1()
sha1obj.update(f.read())
hash = sha1obj.hexdigest()
print(hash)
return hash
def CalcMD5(filepath):
with open(filepath,'rb') as f:
md5obj = hashlib.md5()
md5obj.update(f.read())
hash = md5obj.hexdigest()
print(hash)
return hash
if __name__ == "__main__":
if len(sys.argv)==2 :
hashfile = sys.argv[1]
if not os.path.exists(hashfile):
hashfile = os.path.join(os.path.dirname(__file__),hashfile)
if not os.path.exists(hashfile):
print("cannot found file")
else
CalcMD5(hashfile)
else:
CalcMD5(hashfile)
#raw_input("pause")
else:
print("no filename")
使用Python進(jìn)行文件Hash計(jì)算有兩點(diǎn)必須要注意:
1、文件打開(kāi)方式一定要是二進(jìn)制方式,既打開(kāi)文件時(shí)使用b模式,否則Hash計(jì)算是基于文本的那將得到錯(cuò)誤的文件Hash(網(wǎng)上看到有人說(shuō)遇到Python的Hash計(jì)算錯(cuò)誤在大多是由于這個(gè)原因造成的)。
2、對(duì)于MD5如果需要16位(bytes)的值那么調(diào)用對(duì)象的digest()而hexdigest()默認(rèn)是32位(bytes),同理Sha1的digest()和hexdigest()分別產(chǎn)生20位(bytes)和40位(bytes)的hash值
PS:這里再為大家提供2款hash相關(guān)在線(xiàn)工具供大家參考使用:
在線(xiàn)散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt
在線(xiàn)MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Python編碼操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門(mén)與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
使用wxpy實(shí)現(xiàn)自動(dòng)發(fā)送微信消息功能
這篇文章主要介紹了使用wxpy實(shí)現(xiàn)自動(dòng)發(fā)送微信消息功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02
Python函數(shù)的參數(shù)類(lèi)型和使用技巧詳解
這篇文章主要介紹了Python函數(shù)的參數(shù)類(lèi)型和使用技巧詳解,函數(shù)指通過(guò)專(zhuān)門(mén)的代碼組織,用來(lái)實(shí)現(xiàn)特定功能的代碼段,具有相對(duì)的獨(dú)立性,可以被其他代碼重復(fù)調(diào)用,需要的朋友可以參考下2023-08-08
基于Python實(shí)現(xiàn)在控制臺(tái)查看excel的內(nèi)容
這篇文章主要為大家詳細(xì)介紹了如何基于Python實(shí)現(xiàn)在控制臺(tái)查看excel的內(nèi)容,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12
在vscode中配置python環(huán)境過(guò)程解析
這篇文章主要介紹了在vscode中配置python環(huán)境過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
教你一步步利用python實(shí)現(xiàn)貪吃蛇游戲
這篇文章主要給大家介紹了關(guān)于如何利用python實(shí)現(xiàn)貪吃蛇游戲的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
Python實(shí)現(xiàn)Word表格轉(zhuǎn)成Excel表格的示例代碼
這篇文章主要介紹了Python實(shí)現(xiàn)Word表格轉(zhuǎn)成Excel表格的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04

