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

Python?base64和hashlib模塊及用法詳解

 更新時間:2023年02月24日 09:39:41   作者:Charge8  
這篇文章主要介紹了Python?base64和hashlib模塊,本文通過實(shí)例代碼介紹了base64和hashlib模塊的相關(guān)知識,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

一、base64模塊

base64模塊提供了在二進(jìn)制數(shù)據(jù)和可打印ASCII字符間編解碼的功能,包括 RFC3548中定義的Base16, Base32, Base64, Ascii85, Base85等編碼。

base64模塊屬于標(biāo)準(zhǔn)庫,無需進(jìn)行安裝,導(dǎo)入即可使用。

base64模塊支持兩種接口:

  • bytes類型數(shù)據(jù)進(jìn)行base64編碼。即將類字節(jié)對象編碼為由ASCII可打印字符表示的bytes。
  • base64編碼的bytes類型進(jìn)行解碼。即將類字節(jié)對象或純ASCII字符組成的Unicode字符串解碼為bytes。

注意:編碼與解碼的處理對象是byte,及參數(shù)必須是二進(jìn)制數(shù)據(jù),才可以進(jìn)行正常使用。

1、對字符串編解碼

import base64

str = "Hello Python"

# 默認(rèn)以utf-8編碼
byte_str = str.encode("utf-8")
b64_str = base64.b64encode(byte_str)
print(b64_str)

print("-------------")

# 默認(rèn)以utf-8解碼
byte_str2 = base64.b64decode(b64_str)
str2 = byte_str2.decode("utf-8")
print(str2)

在這里插入圖片描述

2、對URL編解碼

import base64

url = "http://www.baidu.com?k1=v1&k2=值二"

# 默認(rèn)以utf-8編碼
byte_url = url.encode("utf-8")
b64_url = base64.b64encode(byte_url)
print(b64_url)  # b'aHR0cDovL3d3dy5iYWlkdS5jb20/azE9djEmazI95YC85LqM'

print("-------------")

# 默認(rèn)以utf-8解碼
byte_url2 = base64.b64decode(b64_url)
url2 = byte_url2.decode("utf-8")
print(url)  # http://www.baidu.com?k1=v1&k2=值二

二、hashlib模塊

1、hashlib模塊

hashlib是Python的內(nèi)置模塊,提供了多種安全方便的常見摘要算法,其中主要包括MD5,SHA1,SHA256,SHA384,SHA512等。這些摘要方法在使用上通用,返回帶有同樣接口的hash對象,對算法的選擇,差別只在于構(gòu)造方法的選擇。

摘要算法又稱哈希算法、散列算法。它通過一個函數(shù)算法,把任意長度的數(shù)據(jù)轉(zhuǎn)換為一個長度固定的數(shù)據(jù)串)。

1.1 常用屬性

import hashlib

#列出hashlib內(nèi)容
print(dir(hashlib))
#列出所有加密算法
print(hashlib.algorithms_available) 
print(hashlib.algorithms_guaranteed)

#產(chǎn)生的散列字節(jié)大小。
h.digest_size

#哈希內(nèi)部塊的大小
h.block_size

1.2 常用方法

# 創(chuàng)建指定加密模式的hash對象
hash.new([arg])

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

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

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

# 復(fù)制
hash.copy()

1.3 使用步驟

方式一:

import hashlib

# -------以 MD5為例-------
# 1. 創(chuàng)建hash工廠
m = hashlib.md5()

# 2. 在內(nèi)存里面加載二進(jìn)制數(shù)據(jù)
# m.update('Hello'.encode('utf-8'))
# m.update('Python'.encode('utf-8'))
## 等價于,如果二進(jìn)制數(shù)據(jù)很長的話,可以分開更新
m.update('Hello Python'.encode('utf-8'))

print(m.digest_size)  # 16
print(m.block_size)  # 64

# 3、返回十六進(jìn)制str摘要值
hash_value = m.hexdigest()
print(hash_value)  # a709c173220d6185d12248faa9f40ac8

# 3.返回bytes格式的消息摘要
print(m.digest())  # b'\xa7\t\xc1s"\ra\x85\xd1"H\xfa\xa9\xf4\n\xc8'

方式二:

import hashlib

'''
一個通用的構(gòu)造方法,
    name:是某個算法的字符串名稱,
    data:是可選的bytes類型待摘要的數(shù)據(jù)。
'''
m = hashlib.new('md5', b'Hello Python')
print(m.hexdigest())
print(m.digest())

print("-----復(fù)制方法測試-----")

# 復(fù)制
m2 = m.copy()
print(m2)
print(m2.hexdigest())
print(m2.digest())

在這里插入圖片描述

2、MD5(消息摘要算法)

MD5消息摘要算法(英語:MD5 Message-Digest Algorithm),一種被廣泛使用的密碼雜湊函數(shù),可以產(chǎn)生出一個128位的散列值(hash value),用于確保信息傳輸完整一致。

示例代碼如下:

import hashlib

def jm_md5(password):
    # 構(gòu)建MD5對象
    m = hashlib.md5()
    # 自定義加鹽值
    m.update('abc'.encode(encoding='utf-8'))
    m.update(password.encode(encoding='utf-8'))
    # 返回十六進(jìn)制str摘要值
    password_md5 = m.hexdigest()
    return password, password_md5
res = jm_md5('123456')
print(res) # ('123456', '0659c7992e268962384eb17fafe88364')

3、SHA-256(安全哈希算法)

安全哈希算法(Secure Hash Algorithm)主要適用于數(shù)字簽名標(biāo)準(zhǔn)(Digital Signature Standard DSS)里面定義的數(shù)字簽名算法(Digital Signature Algorithm DSA)。驗(yàn)證數(shù)據(jù)的完整性。

科學(xué)家們推出了SHA1,SHA224,SHA256,SHA384,SHA512,當(dāng)然位數(shù)越長,破解難度越大,但同時生成加密的消息摘要所耗時間也更長。常用的還是SHA-256。

示例代碼如下:

import hashlib

def jm_sha256(password):
    # 構(gòu)建MD5對象
    m = hashlib.sha256()
    # m = hashlib.sha512()

    # 自定義加鹽值
    m.update('abc'.encode(encoding='utf-8'))
    m.update(password.encode(encoding='utf-8'))
    # 返回十六進(jìn)制str摘要值
    password_md5 = m.hexdigest()
    return password, password_md5
res = jm_sha256('123456')
print(res) 
# ('123456', 'a03c32fcd351cba2d9738622b083bed022ef07793bd92b59faea0207653f371d')

– 求知若饑,虛心若愚。

到此這篇關(guān)于Python base64和hashlib模塊的文章就介紹到這了,更多相關(guān)Python base64和hashlib模塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一文帶你搞懂Python中的pyc文件

    一文帶你搞懂Python中的pyc文件

    Python是一門解釋性語言,沒有嚴(yán)格意義上的編譯和匯編過程。Pyc文件是py編譯過程中產(chǎn)生的字節(jié)碼文件,可以由虛擬機(jī)直接執(zhí)行,是python將目標(biāo)源碼編譯成字節(jié)碼以后在磁盤上的文件形式。本文就來聊聊pyc文件的寫入等只是,感興趣的可以了解一下
    2022-12-12
  • 使用 Python 寫一個簡易的抽獎程序

    使用 Python 寫一個簡易的抽獎程序

    這篇文章主要介紹了使用 Python 寫一個簡易的抽獎程序,本文通過實(shí)例代碼,思路講解的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • 簡單了解Python下用于監(jiān)視文件系統(tǒng)的pyinotify包

    簡單了解Python下用于監(jiān)視文件系統(tǒng)的pyinotify包

    這篇文章主要介紹了Python下用于監(jiān)視文件系統(tǒng)的pyinotify包,pyinotify基于inotify事件驅(qū)動機(jī)制,需要的朋友可以參考下
    2015-11-11
  • Python列表推導(dǎo)式的使用方法

    Python列表推導(dǎo)式的使用方法

    這篇文章主要介紹了Python列表推導(dǎo)式的使用方法,大家參考使用吧
    2013-11-11
  • Pygame淺析動畫精靈和碰撞檢測實(shí)現(xiàn)方法

    Pygame淺析動畫精靈和碰撞檢測實(shí)現(xiàn)方法

    這篇文章主要介紹了利用pygame完成動畫精靈和碰撞檢測,代碼詳細(xì),內(nèi)容豐富,對于想要學(xué)習(xí)pygame的朋友來講是一個不錯的練習(xí),需要的朋友可以參考下
    2023-01-01
  • Python?format字符串格式化函數(shù)的使用

    Python?format字符串格式化函數(shù)的使用

    本文主要介紹了Python?format字符串格式化函數(shù)的使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Python中使用pprint函數(shù)進(jìn)行格式化輸出的教程

    Python中使用pprint函數(shù)進(jìn)行格式化輸出的教程

    這篇文章主要介紹了Python中使用pprint函數(shù)進(jìn)行格式化輸出的教程,包括能夠控制輸出寬度等非常有用的特性,需要的朋友可以參考下
    2015-04-04
  • 深入了解Python中yield?from語法的使用

    深入了解Python中yield?from語法的使用

    yield?from?是在Python3.3才出現(xiàn)的語法,這篇文章主要為大家介紹了yield?from語法的具體使用,文中的示例代碼簡潔易懂,感興趣的小伙伴可以收藏一下
    2023-05-05
  • python http基本驗(yàn)證方法

    python http基本驗(yàn)證方法

    今天小編就為大家分享一篇python http基本驗(yàn)證方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python中Numpy和Matplotlib的基本使用指南

    Python中Numpy和Matplotlib的基本使用指南

    numpy庫處理的最基礎(chǔ)數(shù)據(jù)類型是由同種元素構(gòu)成的多維數(shù)組(ndarray),而matplotlib 是提供數(shù)據(jù)繪圖功能的第三方庫,其pyplot子庫主要用于實(shí)現(xiàn)各種數(shù)據(jù)展示圖形的繪制,這篇文章主要給大家介紹了關(guān)于Python中Numpy和Matplotlib的基本使用指南,需要的朋友可以參考下
    2021-11-11

最新評論

建湖县| 新乐市| 台中市| 边坝县| 西乌珠穆沁旗| 临江市| 垦利县| 常州市| 民和| 秦安县| 沿河| 盐津县| 吉林省| 永胜县| 汤阴县| 扶沟县| 三门县| 山阴县| 金堂县| 天镇县| 阿拉尔市| 绵阳市| 固安县| 改则县| 蒙城县| 沁源县| 兰考县| 措美县| 墨竹工卡县| 岳阳县| 铁岭县| 江陵县| 新竹县| 大连市| 云霄县| 墨竹工卡县| 临安市| 广南县| 宁强县| 玛纳斯县| 小金县|