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

Python內(nèi)置模塊hashlib、hmac與uuid用法分析

 更新時(shí)間:2018年02月12日 10:44:19   作者:蒼松  
這篇文章主要介紹了Python內(nèi)置模塊hashlib、hmac與uuid用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了hashlib、hmac與uuid模塊的概念、功能及簡(jiǎn)單使用方法,需要的朋友可以參考下

本文實(shí)例講述了Python內(nèi)置模塊hashlib、hmac與uuid用法。分享給大家供大家參考,具體如下:

一、hashlib

md5和sha算法通過消息摘要算法生成定長(zhǎng)的消息摘要,消息摘要算法是不可逆的。但同一段消息通過摘要算法后得到的值是一樣的,可一通過比對(duì)消息摘要驗(yàn)證數(shù)據(jù)的完整性。

sha算法比MD5算法安全,但所需的時(shí)間也稍長(zhǎng)。

1、原始消息摘要

import hashlib
# ######## md5 ########
hash = hashlib.md5()
hash.update('admin')
print hash.hexdigest()
#21232f297a57a5a743894a0e4a801fc3
# ######## sha1 ########
hash = hashlib.sha1()
hash.update('admin')
print hash.hexdigest(),len(hash.hexdigest())
# d033e22ae348aeb5660fc2140aec35850c4da997 40
# ######## sha256 ########
hash = hashlib.sha256()
hash.update('admin')
print hash.hexdigest(),len(hash.hexdigest())
# 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 64
# ######## sha384 ########
hash = hashlib.sha384()
hash.update('admin')
print hash.hexdigest(),len(hash.hexdigest())
# 9ca694a90285c034432c9550421b7b9dbd5c0f4b6673f05f6dbce58052ba20e4248041956ee8c9a2ec9f10290cdc0782 96
# ######## sha512 ########
hash = hashlib.sha512()
hash.update('admin')
print hash.hexdigest(),len(hash.hexdigest())
# c7ad44cbad762a5da0a452f9e854fdc1e0e7a52a38015f23f3eab1d80b931dd472634dfac71cd34ebc35d16ab7fb8a90c81f975113d6c7538dc69dd8de9077ec 128

2、加鹽(salt)后摘要

由于同一個(gè)消息通過摘要算法得到的摘要是相同的,因此可以通過撞庫(kù)的方式得到原始消息值。解決方式是,添加一個(gè)salt拼接原始消息后再進(jìn)行計(jì)算。

import hashlib
# ######## md5 ########
hash = hashlib.md5('898oaFs09f')
hash.update('admin')
print hash.hexdigest()
#以上等價(jià)與
hash = hashlib.md5()
hash.update('898oaFs09fadmin')
print hash.hexdigest()

二、HMAC

HAMC它內(nèi)部對(duì)我們創(chuàng)建 key 和 內(nèi)容 再進(jìn)行處理然后再加密,相當(dāng)安全。一般用于挑戰(zhàn)應(yīng)答。

import hashlib
import hmac
h = hmac.new('keysstring')
h.update('hello')
print h.hexdigest(),len(h.hexdigest())
# 2ca7ac50a9bca542e58e0baad15f8383 32

三、UUID

UUID是128位的全局唯一標(biāo)識(shí)符,通常由32字節(jié)的字符串表示。它可以保證時(shí)間和空間的唯一性,python中稱為UUID,其他語(yǔ)言中可能稱為GUID。

它通過MAC地址、時(shí)間戳、命名空間、隨機(jī)數(shù)、偽隨機(jī)數(shù)來(lái)保證生成ID的唯一性。

UUID主要有五個(gè)算法,也就是五種方法來(lái)實(shí)現(xiàn):

1、uuid1()——基于時(shí)間戳。由MAC地址、當(dāng)前時(shí)間戳、隨機(jī)數(shù)生成??梢员WC全球范圍內(nèi)的唯一性,但MAC的使用同時(shí)帶來(lái)安全性問題,局域網(wǎng)中可以使用IP來(lái)代替MAC。
2、uuid2()——基于分布式計(jì)算。環(huán)境DCE(Python中沒有這個(gè)函數(shù))算法與uuid1相同,不同的是把時(shí)間戳的前4位置換為POSIX的UID。實(shí)際中很少用到該方法。
3、uuid3()——基于名字的MD5散列值。通過計(jì)算名字和命名空間的MD5散列值得到,保證了同一命名空間中不同名字的唯一性,和不同命名空間的唯一性,但同一命名空間的同一名字生成相同的uuid。
4、uuid4()——基于隨機(jī)數(shù)。由偽隨機(jī)數(shù)得到,有一定的重復(fù)概率,該概率可以計(jì)算出來(lái)。
5、uuid5()——基于名字的SHA-1散列值。算法與uuid3相同,不同的是使用 SHA-1算法。

python中沒有實(shí)現(xiàn)uuid2算法。

import uuid
print uuid.uuid1()
print uuid.uuid3(uuid.NAMESPACE_DNS, 'testme')
print uuid.uuid4()
print uuid.uuid5(uuid.NAMESPACE_DNS, 'testme')
# 1a52b39e-a197-11e6-b5c6-8056f2d4c814
# 7a67f5d4-50fd-36f7-bbeb-1c739ab40b8c
# 0c0cc4f0-6ad0-40d3-a796-119dcfaddf60
# dac48d1f-a443-578c-8754-856842a2f98d

PS:關(guān)于加密解密感興趣的朋友還可以參考本站在線工具:

文字在線加密解密工具(包含AES、DES、RC4等):
http://tools.jb51.net/password/txt_encode

MD5在線加密工具:
http://tools.jb51.net/password/CreateMD5Password

在線散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt

在線MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha

在線sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python加密解密算法與技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python文件與目錄操作技巧匯總》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Python?jieba分詞添加自定義詞和去除不需要長(zhǎng)尾詞的操作方法

    Python?jieba分詞添加自定義詞和去除不需要長(zhǎng)尾詞的操作方法

    這篇文章主要介紹了Python?jieba分詞如何添加自定義詞和去除不需要長(zhǎng)尾詞,主要介紹jieba的基礎(chǔ)用法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Python?clip與range函數(shù)保姆級(jí)使用教程

    Python?clip與range函數(shù)保姆級(jí)使用教程

    本文主要和大家介紹了詳解Python中clip與range函數(shù)的用法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參,希望能幫助到大家
    2022-06-06
  • 淺談Python的格式化輸出

    淺談Python的格式化輸出

    這篇文章主要介紹了python中的格式化輸出用法,分析了Python格式化輸出的種類并結(jié)合實(shí)例形式總結(jié)了針對(duì)浮點(diǎn)數(shù)的格式化輸出方法,需要的朋友可以參考下
    2021-10-10
  • python 實(shí)現(xiàn)全球IP歸屬地查詢工具

    python 實(shí)現(xiàn)全球IP歸屬地查詢工具

    這篇文章主要介紹了python 實(shí)現(xiàn)全球IP歸屬地查詢工具的示例代碼,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • python實(shí)現(xiàn)將文件名批量命名為四位數(shù)or五位數(shù)

    python實(shí)現(xiàn)將文件名批量命名為四位數(shù)or五位數(shù)

    這篇文章主要介紹了python實(shí)現(xiàn)將文件名批量命名為四位數(shù)or五位數(shù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python進(jìn)階之全面解讀高級(jí)特性之切片

    Python進(jìn)階之全面解讀高級(jí)特性之切片

    切片的作用就是截取序列對(duì)象,然而,對(duì)于非序列對(duì)象,我們是否有辦法做到切片操作呢?在使用切片的過程中,有什么要點(diǎn)值得重視,又有什么底層原理值得關(guān)注呢?本文將主要跟大家一起來(lái)探討這些內(nèi)容
    2019-02-02
  • python自定義函數(shù)中的return和print使用及說明

    python自定義函數(shù)中的return和print使用及說明

    這篇文章主要介紹了python自定義函數(shù)中的return和print使用及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 詳解Python在使用JSON時(shí)需要注意的編碼問題

    詳解Python在使用JSON時(shí)需要注意的編碼問題

    這篇文章主要介紹了詳解Python在使用JSON時(shí)需要注意的編碼問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 跨平臺(tái)python異步回調(diào)機(jī)制實(shí)現(xiàn)和使用方法

    跨平臺(tái)python異步回調(diào)機(jī)制實(shí)現(xiàn)和使用方法

    這篇文章主要介紹了python異步回調(diào)機(jī)制的實(shí)現(xiàn)方法,提供了使用方法代碼
    2013-11-11
  • pandas如何快速去除列名中的特殊符號(hào)

    pandas如何快速去除列名中的特殊符號(hào)

    在使用Pandas處理數(shù)據(jù)時(shí),經(jīng)常需要處理數(shù)據(jù)中的列名column name,有時(shí)候,列名可能包含特殊字符,比如空格、點(diǎn)號(hào)、括號(hào)等,這些特殊字符可能會(huì)導(dǎo)致下一步的代碼出錯(cuò),因此需要將這些特殊字符從列名中刪除,下面先介紹pandas如何去除列名中的特殊符號(hào),感興趣的朋友一起看看吧
    2024-01-01

最新評(píng)論