国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

python模塊學(xué)習(xí)hashlib

2019-11-14 17:09:12
字體:
供稿:網(wǎng)友

一、hashlib概述

涉及加密服務(wù):14. Cryptographic Services

其中 hashlib是涉及安全散列和消息摘要,提供多個不同的加密算法借口,如SHA1、SHA224、SHA256、SHA384、SHA512、md5等。

import hashlibm = hashlib.md5()   #創(chuàng)建hash對象,md5:(message-Digest Algorithm 5)消息摘要算法,得出一個128位的密文PRint m             #<md5 HASH object @ 000000000254ADF0>m.update('BeginMan')#更新哈希對象以字符串參數(shù)print m.digest()    #返回摘要,作為二進(jìn)制數(shù)據(jù)字符串值print m.hexdigest() #返回十六進(jìn)制數(shù)字字符串    0b28251e684dfbd9102f8b6f0281c0c5print m.digest_size #16print m.block_size  #64

使用new()創(chuàng)建指定加密模式的hash對象

new(name, string='')     """     Return a new hashing object using the named algorithm;     optionally initialized with a string.     """
h = hashlib.new('md5')print h     #<md5 HASH object @ 000000000260BDB0>h2 = hashlib.new('ripemd160','what')print h2    #<ripemd160 HASH object @ 000000000271B9F0>h.update('beginman')print h.hexdigest() #666fc5baa93a7fb207c5bfff03b67732#等效s = hashlib.md5()s.update('beginman')print s.hexdigest() #666fc5baa93a7fb207c5bfff03b67732print h2.hexdigest()    #9c1185a5c5e9fc54612808977ee8f548b2258d31

三、常用屬性

print hashlib.algorithms    #('md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512')    列出所有加密算法
print h.digest_size         #16 產(chǎn)生的散列的字節(jié)大小。
print h.block_size          #64 The internal block size of the hash algorithm in bytes.

 

四、常用方法

hash.update(arg)

更新哈希對象以字符串參數(shù),如果同一個hash對象重復(fù)調(diào)用該方法,則m.update(a); m.update(b) is equivalent to m.update(a+b).

 

hash.digest()

返回摘要,作為二進(jìn)制數(shù)據(jù)字符串值,

 

hash.hexdigest()

返回摘要,作為十六進(jìn)制數(shù)據(jù)字符串值,

 

hash.copy()

復(fù)制

最近在測試文件拷貝測試,需要對文件拷貝后進(jìn)行MD5值比較,看是不是拷貝完全。google和baidu上都是使用md5模塊讀取所有的文件進(jìn)內(nèi)存,在計算md5,導(dǎo)致計算超過1G大小的文件報錯。timespace兄給出了增量計算MD5的方法,記錄一下:

 

#!/usr/bin/env pythonimport hashlibimport sys def main():    if len(sys.argv) != 2:        sys.exit('Usage: %s file' % sys.argv[0])    filename = sys.argv[1]    m = hashlib.md5()    with open(filename, 'rb') as fp:         while True:            blk = fp.read(4096) # 4KB per block            if not blk: break            m.update(blk)    print m.hexdigest(), filenameif __name__ == '__main__':    main() 

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 封开县| 虹口区| 棋牌| 西昌市| 克什克腾旗| 屏山县| 巴彦县| 吴堡县| 灵石县| 莒南县| 辛集市| 新乐市| 鄂托克前旗| 镇平县| 黑河市| 留坝县| 伊川县| 宿松县| 文化| 鲁山县| 营山县| 泰和县| 大姚县| 天等县| 拜城县| 建昌县| 正定县| 武功县| 武隆县| 綦江县| 泰顺县| 张家川| 和田市| 神农架林区| 天峨县| 正镶白旗| 靖边县| 牟定县| 新宾| 微山县| 卓资县|