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

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

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

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

一、hashlib

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

sha算法比MD5算法安全,但所需的時間也稍長。

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)后摘要

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

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

二、HMAC

HAMC它內(nèi)部對我們創(chuàng)建 key 和 內(nèi)容 再進行處理然后再加密,相當安全。一般用于挑戰(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位的全局唯一標識符,通常由32字節(jié)的字符串表示。它可以保證時間和空間的唯一性,python中稱為UUID,其他語言中可能稱為GUID。

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

UUID主要有五個算法,也就是五種方法來實現(xiàn):

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

python中沒有實現(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īng)典教程

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

相關(guān)文章

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

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

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

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

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

    淺談Python的格式化輸出

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

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

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

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

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

    Python進階之全面解讀高級特性之切片

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

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

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

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

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

    跨平臺python異步回調(diào)機制實現(xiàn)和使用方法

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

    pandas如何快速去除列名中的特殊符號

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

最新評論