python md5使用例子


hashlib是個專門提供hash算法的庫,現在里面包括md5, sha1, sha224, sha256, sha384, sha512,使用非常簡單、方便。 md5經常用來做用戶密碼的存儲。而sha1則經常用作數字簽名

使用Python進行文件Hash計算有兩點必須要注意:

1、文件打開方式一定要是二進制方式,既打開文件時使用b模式,否則Hash計算是基於文本的那將得到錯誤的文件Hash(網上看到有人說遇到Python的Hash計算錯誤在大多是由於這個原因造成的)。

2、對於MD5如果需要16位(bytes)的值那么調用對象的digest()而hexdigest()默認是32位(bytes),同理Sha1的digest()和hexdigest()分別產生20位(bytes)和40位(bytes)的hash值

import hashlib 

a = "a test string"

print hashlib.md5(a).hexdigest()

print hashlib.sha1(a).hexdigest()

print hashlib.sha224(a).hexdigest()

print hashlib.sha256(a).hexdigest()

print hashlib.sha384(a).hexdigest()


 

#python 檢測文件MD5值

#python version 2.6 


import hashlib

import os,sys


#簡單的測試一個字符串的MD5值

def GetStrMd5(src):

    m0=hashlib.md5()

    m0.update(src)

    print m0.hexdigest() 

    pass


#大文件的MD5值

def GetFileMd5(filename):

    if not os.path.isfile(filename):

        return

    myhash = hashlib.md5()

    f = file(filename,'rb')

    while True:

        b = f.read(8096)

        if not b :

            break

        myhash.update(b)

    f.close()

    return myhash.hexdigest()


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")


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM