最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

1.hashlib密碼散列

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

1.1 散列算法

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

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

有些算法在所有平臺(tái)上都可用,而有些則依賴于底層庫(kù)。這兩種算法分別由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示例

要為一個(gè)數(shù)據(jù)塊(在這里就是轉(zhuǎn)換為一個(gè)字節(jié)串的Unicode串)計(jì)算MD5散列或摘要,首先要?jiǎng)?chuàng)建散列對(duì)象,然后增加數(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())

這個(gè)例子使用了hexdigest()方法而不是digest(),因?yàn)橐袷交敵鲆员闱宄拇蛴 H绻梢越邮芏M(jìn)制摘要值,那么可以使用digest()。

1.3 SHA1示例

SHA1摘要也用同樣的方式計(jì)算。

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

這個(gè)例子中的摘要值有所不同,因?yàn)镸D5和SHA1算法不同。

1.4 增量更新

散列計(jì)算器的update()方法可以反復(fù)調(diào)用。每次調(diào)用時(shí),都會(huì)根據(jù)提供的附加文本更新摘要。增量更新比將整個(gè)文件讀入內(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))

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

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

相關(guān)文章

  • Python讀取csv文件實(shí)例解析

    Python讀取csv文件實(shí)例解析

    這篇文章主要介紹了Python讀取csv文件實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Scrapy-redis爬蟲(chóng)分布式爬取的分析和實(shí)現(xiàn)

    Scrapy-redis爬蟲(chóng)分布式爬取的分析和實(shí)現(xiàn)

    所謂的scrapy-Redis實(shí)際上就是scrapy+redis,其中對(duì)redis的操作采用redis-py客戶端。下面這篇文章詳細(xì)介紹了Scrapy-redis爬蟲(chóng)分布式爬取的分析和實(shí)現(xiàn),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-02-02
  • Python應(yīng)用打包成APK的全部流程記錄

    Python應(yīng)用打包成APK的全部流程記錄

    這篇文章主要介紹了Python應(yīng)用打包成APK的全部流程,遵循正確的步驟,可以輕松地將Python應(yīng)用轉(zhuǎn)換為在Android設(shè)備上運(yùn)行的APK文件,從而擴(kuò)展應(yīng)用的可用平臺(tái),需要的朋友可以參考下
    2024-09-09
  • Python+tkinter實(shí)現(xiàn)音樂(lè)下載軟件的制作

    Python+tkinter實(shí)現(xiàn)音樂(lè)下載軟件的制作

    平常我們下載的歌曲,都是各種妖魔鬼怪的格式橫行,想下載下來(lái)用一下都不行,還只能在它的播放器內(nèi)聽(tīng),這誰(shuí)受得了~本文就來(lái)用Python制作個(gè)音樂(lè)下載軟件,需要的可以參考一下
    2022-09-09
  • python pipeline的用法及避坑點(diǎn)

    python pipeline的用法及避坑點(diǎn)

    在本篇文章里小編給大家分享的是一篇關(guān)于python pipeline的用法及避坑點(diǎn),有需要的朋友們可以跟著學(xué)習(xí)下。
    2021-07-07
  • 詳解Python中的三器一閉

    詳解Python中的三器一閉

    這篇文章主要介紹了詳解Python中的三器一閉,Python中的三器一閉是指迭代器、裝飾器、生成器和閉包,需要的朋友可以參考下
    2023-05-05
  • python數(shù)據(jù)處理之Pandas類型轉(zhuǎn)換的實(shí)現(xiàn)

    python數(shù)據(jù)處理之Pandas類型轉(zhuǎn)換的實(shí)現(xiàn)

    本文主要介紹了python數(shù)據(jù)處理之Pandas類型轉(zhuǎn)換的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • python存儲(chǔ)16bit和32bit圖像的實(shí)例

    python存儲(chǔ)16bit和32bit圖像的實(shí)例

    今天小編就為大家分享一篇python存儲(chǔ)16bit和32bit圖像的實(shí)例,具有的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • 利用numpy+matplotlib繪圖的基本操作教程

    利用numpy+matplotlib繪圖的基本操作教程

    這篇文章主要給大家介紹了利用numpy+matplotlib繪圖的基本操作,文中介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)matplotlib繪圖具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-05-05
  • 關(guān)于numpy.where()函數(shù) 返回值的解釋

    關(guān)于numpy.where()函數(shù) 返回值的解釋

    今天小編就為大家分享一篇關(guān)于numpy.where()函數(shù) 返回值的解釋,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12

最新評(píng)論

旬阳县| 青阳县| 双峰县| 聂拉木县| 东城区| 屏东市| 井陉县| 鄯善县| 丹巴县| 定南县| 黎城县| 同德县| 平邑县| 达拉特旗| 定西市| 固始县| 晋江市| 浑源县| 盐源县| 周宁县| 苏尼特右旗| 青神县| 乌海市| 始兴县| 孟连| 湛江市| 万荣县| 项城市| 白朗县| 休宁县| 长寿区| 武川县| 淮南市| 巧家县| 图片| 胶州市| 闽清县| 都兰县| 邵阳市| 平昌县| 蓝田县|