欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python3 hashlib密碼散列算法原理詳解

 更新時間:2020年03月30日 15:51:06   作者:愛編程的小灰灰  
這篇文章主要介紹了Python3 hashlib密碼散列算法原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

1.hashlib密碼散列

hashlib模塊定義了一個API來訪問不同的密碼散列算法。要使用一個特定的散列算法,可以用適當(dāng)?shù)臉?gòu)造器函數(shù)或new()來創(chuàng)建一個散列對象。不論使用哪個具體的算法,這些對象都使用相同的API。

1.1 散列算法

由于hashlib有OpenSSL提供“底層支持”,所以O(shè)penSSL庫提供的所有算法都可用,包括:

  • md5
  • sha1
  • sha224
  • sha256
  • sha384
  • sha512

有些算法在所有平臺上都可用,而有些則依賴于底層庫。這兩種算法分別由algorithms_guaranteed和algorithms_available提供。

import hashlib
print('Guaranteed:\n{}\n'.format(
  ', '.join(sorted(hashlib.algorithms_guaranteed))))
print('Available:\n{}'.format(
  ', '.join(sorted(hashlib.algorithms_available))))

Guaranteed:
blake2b, blake2s, md5, sha1, sha224, sha256, sha384, sha3_224, sha3_256, sha3_384, sha3_512, sha512, shake_128, shake_256
Available:
DSA, DSA-SHA, MD4, MD5, RIPEMD160, SHA, SHA1, SHA224, SHA256, SHA384, SHA512, blake2b, blake2s, dsaEncryption, dsaWithSHA, ecdsa-with-SHA1, md4, md5, ripemd160, sha, sha1, sha224, sha256, sha384, sha3_224, sha3_256, sha3_384, sha3_512, sha512, shake_128, shake_256, whirlpool

1.2 MD5示例

要為一個數(shù)據(jù)塊(在這里就是轉(zhuǎn)換為一個字節(jié)串的Unicode串)計算MD5散列或摘要,首先要創(chuàng)建散列對象,然后增加數(shù)據(jù),最后調(diào)用digest()或hexdigest()。

import hashlib
lorem = '''Lorem ipsum dolor sit amet, consectetur adipisicing
elit, sed do eiusmod tempor incididunt ut labore et dolore magna
aliqua. Ut enim ad minim veniam, quis nostrud exercitation
ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis
aute irure dolor in reprehenderit in voluptate velit esse cillum
dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt
mollit anim id est laborum.'''
h = hashlib.md5()
h.update(lorem.encode('utf-8'))
print(h.hexdigest())

這個例子使用了hexdigest()方法而不是digest(),因為要格式化輸出以便清楚的打印。如果可以接受二進制摘要值,那么可以使用digest()。

1.3 SHA1示例

SHA1摘要也用同樣的方式計算。

import hashlib
lorem = '''Lorem ipsum dolor sit amet, consectetur adipisicing
elit, sed do eiusmod tempor incididunt ut labore et dolore magna
aliqua. Ut enim ad minim veniam, quis nostrud exercitation
ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis
aute irure dolor in reprehenderit in voluptate velit esse cillum
dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt
mollit anim id est laborum.'''
h = hashlib.sha1()
h.update(lorem.encode('utf-8'))
print(h.hexdigest())

這個例子中的摘要值有所不同,因為MD5和SHA1算法不同。

1.4 增量更新

散列計算器的update()方法可以反復(fù)調(diào)用。每次調(diào)用時,都會根據(jù)提供的附加文本更新摘要。增量更新比將整個文件讀入內(nèi)存更高效,而且能生成相同的結(jié)果。

import hashlib
lorem = '''Lorem ipsum dolor sit amet, consectetur adipisicing
elit, sed do eiusmod tempor incididunt ut labore et dolore magna
aliqua. Ut enim ad minim veniam, quis nostrud exercitation
ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis
aute irure dolor in reprehenderit in voluptate velit esse cillum
dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt
mollit anim id est laborum.'''
h = hashlib.md5()
h.update(lorem.encode('utf-8'))
all_at_once = h.hexdigest()
def chunkize(size, text):
  "Return parts of the text in size-based increments."
  start = 0
  while start < len(text):
    chunk = text[start:start + size]
    yield chunk
    start += size
  return
h = hashlib.md5()
for chunk in chunkize(64, lorem.encode('utf-8')):
  h.update(chunk)
line_by_line = h.hexdigest()
print('All at once :', all_at_once)
print('Line by line:', line_by_line)
print('Same    :', (all_at_once == line_by_line))

這個例子展示了讀取或生成數(shù)據(jù)時如何以增量方式更新一個摘要。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺談pandas中shift和diff函數(shù)關(guān)系

    淺談pandas中shift和diff函數(shù)關(guān)系

    下面小編就為大家分享一篇淺談pandas中shift和diff函數(shù)關(guān)系,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • 在python里從協(xié)程返回一個值的示例

    在python里從協(xié)程返回一個值的示例

    今天小編就為大家分享一篇在python里從協(xié)程返回一個值的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • 用Python輸出一個楊輝三角的例子

    用Python輸出一個楊輝三角的例子

    這篇文章主要介紹了用Python和erlang輸出一個楊輝三角的例子,同時還提供了一個erlang版楊輝三角,需要的朋友可以參考下
    2014-06-06
  • Python發(fā)送郵件測試報告操作實例詳解

    Python發(fā)送郵件測試報告操作實例詳解

    這篇文章主要介紹了Python發(fā)送郵件測試報告操作,結(jié)合實例形式較為詳細的分析了Python郵件發(fā)送相關(guān)模塊使用及操作注意事項,需要的朋友可以參考下
    2018-12-12
  • tensorflow實現(xiàn)加載mnist數(shù)據(jù)集

    tensorflow實現(xiàn)加載mnist數(shù)據(jù)集

    這篇文章主要為大家詳細介紹了tensorflow實現(xiàn)加載mnist數(shù)據(jù)集,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • Pyspider進行API接口抓取和數(shù)據(jù)采集的實現(xiàn)

    Pyspider進行API接口抓取和數(shù)據(jù)采集的實現(xiàn)

    Pyspider是一個基于Python的強大的網(wǎng)絡(luò)爬蟲框架,它提供了豐富的功能和靈活的擴展性,使我們可以輕松地進行數(shù)據(jù)的抓取和處理,本文主要介紹了Pyspider進行API接口抓取和數(shù)據(jù)采集的實現(xiàn),感興趣的可以了解一下
    2023-09-09
  • Python selenium頁面加載慢超時的解決方案

    Python selenium頁面加載慢超時的解決方案

    這篇文章主要介紹了Python selenium頁面加載慢超時的解決方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • PHP基于phpqrcode類庫生成二維碼過程解析

    PHP基于phpqrcode類庫生成二維碼過程解析

    這篇文章主要介紹了PHP基于phpqrcode類庫生成二維碼過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • python輸出帶顏色字體實例方法

    python輸出帶顏色字體實例方法

    在本篇文章里小編給大家整理了關(guān)于python輸出帶顏色字體實例以及相關(guān)代碼,有需要的朋友們可以學(xué)習(xí)參考下。
    2019-09-09
  • python中torch.nn.identity()方法詳解

    python中torch.nn.identity()方法詳解

    今天看源碼時遇到的這個恒等函數(shù),就如同名字那樣占位符,并沒有實際操作,下面這篇文章主要給大家介紹了關(guān)于python中torch.nn.identity()方法的相關(guān)資料,需要的朋友可以參考下
    2022-03-03

最新評論